簡體   English   中英

為什么localStorage [“...”]未定義,但localStorage.getItem(“...”)為空?

[英]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接口的指定gettersetter ,因此它們也是完全支持的訪問存儲內容的方式。

但是, []語法更類似於普通對象和/或數組屬性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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM