我知道这可能非常令人困惑,但我想要的是获取本地存储的价值,而不是设置它:
var cookies = localStorage.totalCookies
我希望它是这样的:
var cookies = value of localstorage.totalCookies
我想要这样,以便var cookies不等于localstorage,因为我希望一次更改var cookies,而不是一个常量的localstorage更新。
答案 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?