dav*_*dhq 2 javascript undefined local-storage
如果我这样做:
localStorage['a'] = undefined
alert(localStorage['a'] || 20)
Run Code Online (Sandbox Code Playgroud)
警告"未定义" - 为什么?
var a = undefined
alert(a || 20)
Run Code Online (Sandbox Code Playgroud)
现在20被警告.
localStorage.clear()
alert(localStorage['a'] || 20)
Run Code Online (Sandbox Code Playgroud)
这里也是20 ...而且我检查了localStorage ['a']是未定义的...就像在第一种情况下我手动将其设置为未定义...那么为什么不同的结果呢?
localStorage存储字符串并将传递的内容转换为字符串,因此
localStorage['a'] = undefined
Run Code Online (Sandbox Code Playgroud)
将字符串设置"undefined"为localStorage中的值.它不会删除密钥,也不会将其值设置为undefined.
当然"undefined"不是假"undefined"||20的"undefined".
要删除值,请使用
localStorage.removeItem('a');
Run Code Online (Sandbox Code Playgroud)
另外要小心,如果你设置的话
localStorage['a'] = 20
Run Code Online (Sandbox Code Playgroud)
那么你20在调用时不会得到localStorage['a']但是字符串"20".如果要使用默认值获取非空数字,可以执行以下操作:
var num = parseInt(localStorage['a'])||20;
Run Code Online (Sandbox Code Playgroud)