如果我这样做:
localStorage['a'] = undefined
alert(localStorage['a'] || 20)
“未定义”会被警告 - 为什么?
var a = undefined
alert(a || 20)
现在20被警告。
localStorage.clear()
alert(localStorage['a'] || 20)
这里也是20 ...而且我检查了localStorage ['a']是未定义的...就像我在第一种情况下手动设置为未定义时...那么为什么会有不同的结果?
答案 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;