web-dev-qa-db-ja.com

localStorage ["..."]が未定義なのに、localStorage.getItem( "...")がnullなのはなぜですか?

前回チェックしたとき、次の2行がtrueを返しました。

null == localStorage["foo"];
null == localStorage.getItem("foo");

nullundefinedで置き換える場合も同様です。したがって、最初の質問は、localStorageに対処する2つの方法があるのはなぜですか?そして、なぜ

localStorage["foo"]

undefinedを返します

localStorage.getItem("foo")

nullを返しますか?

JSを開発する際に注意する必要がありますか?

9
jaySon

Web Storage Specificationで必要.getItem()は、不明なキーに対してnullを返します。

ただし、.getItem()および.setItem()は、IDLで、getterインターフェイスに指定されたsetterおよびStorageとして明確に定義されていることに注意してください。 、したがって、ストレージのコンテンツにアクセスする方法も完全にサポートされています。

ただし、[]構文は、通常のオブジェクトや配列プロパティゲッターに似ており、これらのように、不明なプロパティ名に対してundefinedを返します。

[]構文を使用しないnotの理由は、最初にオブジェクトプロパティを操作し、実際のプロパティとメソッドを上書きできるようにするためです。 localStorageオブジェクトの、cf:

> localStorage['getItem'] = function() { return 0 }
> localStorage.getItem('getItem')
0
7
Alnitak

localStorage["..."]はlocalstorageの無効な使用法です。実際のデータベースにアクセスするのではなく、localstorageオブジェクトのメソッドにアクセスしようとしています。

あなたが使用する必要があります

localStorage.getItem("...")

そして

localStorage.setItem("...")

ストレージデータベースにアクセスするメソッド。

2
muchweb

JavaScriptでは、オブジェクト内に存在しないキーのundefined値を常に取得します。

a = {}; //new object
alert(a["test"]); // you get 'undefined' because "test" keys is not found

LocalStorageで.getItemは、localStorageオブジェクト内のキーをチェックし、見つからない場合はnullを返すメソッドです。

Javascriptのせいにしないでください。これはlocalStorageオブジェクトの動作にすぎません。

1
Kadmillos