在传递参数时从localStorage ORing一个未定义的值

时间:2013-08-11 19:07:35

标签: javascript local-storage undefined

如果我这样做:

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

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

var a = undefined
alert(a || 20)

现在20被警告。

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

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

1 个答案:

答案 0 :(得分: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;