[英]Why is localStorage[“…”] undefined, but localStorage.getItem(“…”) is null?
上次檢查時,以下兩行返回true
:
null == localStorage["foo"];
null == localStorage.getItem("foo");
使用undefined
替換null
時也是如此。 所以第一個問題是,為什么有兩種方法可以解決localStorage問題? 為什么呢
localStorage["foo"]
返回undefined
while
localStorage.getItem("foo")
返回null
?
在開發JS時我需要處理這個問題嗎?
Web存儲規范要求 .getItem()
為未知密鑰返回null
。
但請注意, .getItem()
和.setItem()
在IDL中被明確定義為Storage
接口的指定getter
和setter
,因此它們也是完全支持的訪問存儲內容的方式。
但是, []
語法更類似於普通對象和/或數組屬性getter,並且類似於未知屬性名稱的返回undefined
。
不使用[]
語法的原因是它將首先對對象屬性進行操作,並且非常樂意允許您覆蓋localStorage
對象的實際屬性和方法,cf:
> localStorage['getItem'] = function() { return 0 }
> localStorage.getItem('getItem')
0
localStorage["..."]
是localstorage的無效用法。 您正在嘗試訪問localstorage
對象的方法,而不是訪問實際的數據庫。
你必須使用
localStorage.getItem("...")
和
localStorage.setItem("...")
訪問存儲數據庫的方法。
在javascript中,您始終會獲得對象內不存在的鍵的undefined
值。
a = {}; //new object
alert(a["test"]); // you get 'undefined' because "test" keys is not found
在localStorage中, .getItem
是一個檢查localStorage對象內部鍵的方法,如果找不到則返回null
。
不要責怪javascript,它只是localStorage對象的行為
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.