上次检查时,以下两行返回true
:
null == localStorage["foo"];
null == localStorage.getItem("foo");
使用null
替换undefined
时同样适用。
所以第一个问题是,为什么有两种方法可以解决localStorage问题?为什么
localStorage["foo"]
在
时返回undefined
localStorage.getItem("foo")
返回null
?
开发JS时我需要注意这个吗?
答案 0 :(得分:6)
.getItem()
null
为未知密钥返回.getItem()
。
但请注意,.setItem()
和getter
在IDL中明确定义为setter
接口的指定Storage
和[]
,因此它们还完全支持访问存储内容的方式。
但是undefined
语法更类似于普通对象和/或数组属性getter,就像那些返回[]
未知属性名称一样。
使用localStorage
语法的原因是它首先对对象属性进行操作,并且非常乐意允许您覆盖> localStorage['getItem'] = function() { return 0 }
> localStorage.getItem('getItem')
0
对象的实际属性和方法,cf:
{{1}}
答案 1 :(得分:2)
localStorage["..."]
是localstorage的无效用法。您正在尝试访问localstorage
对象的方法,而不是访问实际的数据库。
你必须使用
localStorage.getItem("...")
和
localStorage.setItem("...")
访问存储数据库的方法。
答案 2 :(得分:1)
在javascript中,您始终会获得对象内不存在的键的undefined
值。
a = {}; //new object
alert(a["test"]); // you get 'undefined' because "test" keys is not found
在localStorage中.getItem
是一个检查localStorage对象内部键的方法,如果找不到则返回null
。
不要责怪javascript,它只是localStorage对象行为