2

如果我这样做:

localStorage['a'] = undefined
alert(localStorage['a'] || 20)

“未定义”被警告 - 为什么?

var a = undefined
alert(a || 20)

现在 20 收到警报。

localStorage.clear()
alert(localStorage['a'] || 20)

这里也是 20 ......我检查了 localStorage['a'] 是未定义的......就像在第一种情况下,当我手动将它设置为未定义......那么为什么不同的结果?

4

1 回答 1

5

localStorage 存储字符串并将您传递的内容转换为字符串,因此

localStorage['a'] = undefined

将字符串设置"undefined"为 localStorage 中的值。它不会删除密钥,也不会将其值设置为undefined.

当然"undefined"不是虚假"undefined"||20"undefined"

要删除一个值,请使用

localStorage.removeItem('a');

顺便提一下,如果你设置

localStorage['a'] = 20

20那么你在调用时不会得到localStorage['a']字符串"20"。当您想获得具有默认值的非空数字时,您可以这样做:

var num = parseInt(localStorage['a'])||20;
于 2013-08-11T19:09:06.860 回答