2

私がこれを行う場合:

localStorage['a'] = undefined
alert(localStorage['a'] || 20)

「未定義」が警告されます-なぜですか?

var a = undefined
alert(a || 20)

現在20が警告されています。

localStorage.clear()
alert(localStorage['a'] || 20)

ここでも20...そして、localStorage['a']が未定義であることを確認しました...最初のケースと同じように、手動で未定義に設定しました...では、なぜ異なる結果になるのでしょうか?

4

1 に答える 1

5

localStorage は文字列を格納し、渡したものを文字列に変換するため、

localStorage['a'] = undefined

文字列"undefined"を localStorage の値として設定します。キーを削除せず、その値を として設定しませんundefined

そしてもちろん、偽りでは"undefined"ありません。"undefined"||20"undefined"

値を削除するには、次を使用します

localStorage.removeItem('a');

余談ですが、設定すると

localStorage['a'] = 20

20次に、呼び出し時に取得しませんlocalStorage['a']が、文字列を取得します"20"。デフォルト値で null 以外の数値を取得する場合は、次のようにします。

var num = parseInt(localStorage['a'])||20;
于 2013-08-11T19:09:06.860 に答える