为什么localStorage ["..."]未定义,但localStorage.getItem("...")为空?

jay*_*Son 9 javascript null undefined local-storage

上次我检查时,返回以下两行true:

null == localStorage["foo"];
null == localStorage.getItem("foo");
Run Code Online (Sandbox Code Playgroud)

同样更换时应用nullundefined.所以第一个问题是,为什么有两种方法来解决localStorage?为什么呢

localStorage["foo"]
Run Code Online (Sandbox Code Playgroud)

回来的undefined时候

localStorage.getItem("foo")
Run Code Online (Sandbox Code Playgroud)

回来了null

在开发JS时我需要处理这个问题吗?

Aln*_*tak 7

Web存储规范要求.getItem()返回null一个未知的关键.

但是请注意,.getItem().setItem()在IDL是专门定义为被指定gettersetterStorage界面,因此他们也访问存储的内容完全支持方式.

但是,[]语法更类似于普通对象和/或数组属性getter,并且类似于undefined未知属性名称的返回.

使用[]语法的原因是它将首先对对象属性进行操作,并且非常乐意允许您覆盖localStorage对象的实际属性和方法,cf:

> localStorage['getItem'] = function() { return 0 }
> localStorage.getItem('getItem')
0
Run Code Online (Sandbox Code Playgroud)