将变量强制转换为“输出”;“类型”;在JavaScript中

将变量强制转换为“输出”;“类型”;在JavaScript中,javascript,casting,typeof,Javascript,Casting,Typeof,我正在用JavaScript制作一个系统,在这里我可以从本地存储设置和获取变量。我的问题是,当我将一个整数变量设置到本地存储中,并从本地存储中获取它时,它返回的是一个字符串,而不是整数/数字 我在JavaScript中尝试过typeof,但我不知道如何将变量从本地存储(字符串)转换为变量(整数) 一切正常,我只需要弄清楚如何将变量转换为所需的类型。我可能用了错误的方法,但任何方法都有帮助。尝试使用类似的if-else if(type == 'number') { v = parseFloat(v

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

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


一切正常,我只需要弄清楚如何将变量转换为所需的类型。我可能用了错误的方法,但任何方法都有帮助。

尝试使用类似的if-else

if(type == 'number') { v = parseFloat(v) }
else if(type == 'string') { v = v.toString() } // Just an example

这是感谢@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;
}

只需使用
localStorage.setItem(名称,JSON.stringify(值))
JSON.parse
返回的字符串的值。无需将类型存储在单独的对象中(无论如何,您都可以使用JSON)。@Bergi是正确的。将其插入本地存储时,只需将其字符串化,将其拉出时,只需对其进行解析。但是请记住,
JSON.stringify
不能正确解析所有数据类型。ES6数据结构无法使用其默认行为进行适当的字符串化。如果你想存储
Set
s和
Map
s@Bergi是的,这就是我想要的,它确实起作用了。谢谢
v
已经是一个字符串,不需要调用
.toString()
。是的,我正在考虑这样做,但我不想对输出类型的所有结果都这样做。你认为有更有效的方法吗?也就是说,您不必指定类型是否等于数字或布尔值等。如果存储的值不可解析,parse将是primitivně(字符串、数字)、object、null、未定义或抛出
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;
}