如何在不将其设置为变量的情况下获取localstorage的值

时间:2016-08-03 20:48:30

标签: javascript jquery html5

我知道这可能非常令人困惑,但我想要的是获取本地存储的价值,而不是设置它:

var cookies = localStorage.totalCookies

我希望它是这样的:

var cookies = value of localstorage.totalCookies

我想要这样,以便var cookies不等于localstorage,因为我希望一次更改var cookies,而不是一个常量的localstorage更新。

2 个答案:

答案 0 :(得分:2)

localStorage中存储内容的数据类型始终为string,即使您为其编写了数值。

要获取数值,您只需要将其强制回一个数字,例如使用单一+。您还应该为localStorage中的条目不存在时提供默认值。如果该默认值为0,那么您可以这样写:

var cookies = +localStorage.totalCookies || 0;

或者,如果您想测试该条目的存在,并对其是否为数字进行另一个测试:

if (localStorage.totalCookies === undefined) {
    console.log('The totalCookies entry was not found');
    // etc..
} else {
    var cookies = +localStorage.totalCookies;
    if (isNaN(cookies)) {
        console.log('The totalCookies entry is not numerical');
        // etc...
    } 
}

答案 1 :(得分:1)

这种情况正在发生,因为当您将变量声明为对象时,您正在为对象创建引用,而不是它的副本。您可以使用获取&如上所述,War10ck提到的localStorage 设置方法:

获取:localStorage.getItem('totalCookies') 设置:localStorage.setItem('totalCookies', 'some value') 删除:localStorage.removeItem('totalCookies')

但总的来说,您需要找到克隆对象的方法,以防止后续篡改原始对象。这是一个快速的方法:

var cloneOfA = JSON.parse(JSON.stringify(a));

您可以在此处看到有关此内容的更多讨论: How do I correctly clone a JavaScript object?