我上次检查时,以下两行返回 true
:
null == localStorage["foo"];
null == localStorage.getItem("foo");
将 null
替换为 undefined
时同样适用。
那么第一个问题是,为什么有两种方式来寻址localStorage?为什么
localStorage["foo"]
返回 undefined
而
localStorage.getItem("foo")
返回 null
?
我在开发 JS 时需要注意这一点吗?
最佳答案
Web Storage Specification requires .getItem()
为未知 key 返回 null
。
但是请注意,.getItem()
和 .setItem()
在 IDL 中专门定义为指定的 getter
和 setter
Storage
接口(interface),因此它们也是访问存储内容的完全支持的方式。
然而,[]
语法更类似于普通的对象和/或数组属性 getter,就像那些为未知属性名称返回 undefined
一样。
不使用 []
语法的原因是它会首先对对象属性进行操作,并且很乐意让您覆盖 的真实属性和方法>localStorage
对象,c.f:
> localStorage['getItem'] = function() { return 0 }
> localStorage.getItem('getItem')
0
关于javascript - 为什么 localStorage ["..."] 未定义,但 localStorage.getItem ("...") 为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29519452/