首页 > 解决方案 > 将变量转换为 JavaScript 中“typeof”的输出

问题描述

我正在用 JavaScript 制作一个系统,我可以在其中设置和从本地存储中获取变量。我的问题是,当我将一个整数变量设置为本地存储并从本地存储中取回它时,它返回一个字符串而不是整数/数字。

我在 JavaScript 中尝试过 typeof,但我不知道如何将我的变量从本地存储(字符串)转换为变量(整数)。

function setVar(name, value) {
    // Set variable type
    var json = localStorage.getItem("types");
    if(json == null) {
        json = {};
    }else{
        json = JSON.parse(json);
    }
    json[name] = typeof value;
    localStorage.setItem("types", JSON.stringify(json));
    // Set the variable
    localStorage.setItem(name, value);
}

function getVar(name, defaultValue = 0) {
    var v = localStorage.getItem(name);
    // Set default value if value is not already set
    if(v == null) {
        setVar(name, defaultValue);
        v = defaultValue;
    }
    // Cast to value type
    var type = JSON.parse(localStorage.getItem("types"))[name];

    // TODO: Cast v (string from localStorage) to type (output from typeof) 

    return v;
}

一切正常我只需要弄清楚如何将我的变量转换为所需的类型。我可能会以错误的方式处理这个问题,但任何事情都有帮助。

标签: javascriptcastingtypeof

解决方案


这是感谢@Bergi的解决方案

function setVar(name, value) {
    // Set the variable
    localStorage.setItem(name, JSON.stringify(value));
}

function getVar(name, defaultValue = 0) {
    // Get variable from local storage
    var v = JSON.parse(localStorage.getItem(name));
    // Set default value if value is not already set
    if(v == null) {
        setVar(name, defaultValue);
        v = defaultValue;
    }
    return v;
}

推荐阅读