OSXのFirefox 45 では、存在しないキーからlocalStorage
の項目を取得すると、関数呼び出しはnull
を返します。私はコンソールでこれをテストしました。Javascriptはなぜ変数代入時にnullにキャストするのですか?
代わりに呼び出し結果を変数に代入し、その値をコンソールに出力すると、"null"
という文字列が得られます。
以前に定義されていない変数を変数に代入すると、呼び出し結果が文字列にキャストされるのはなぜですか? (コンソールで)
使用されるコード:
編集:私のミス:両方のバージョンではOSX版Chrome 50.0.2661.86(両方ともnull
を返す)
EDIT2で正しく動作するように思われます。テストで別の変数名を使用しました(具体的にはvar name
)。ここで、コンソールに変数name
の値が返された場合は、が返されます。これはwindow
という文字列型のプロパティで、デフォルトは"null"
です。だから、それはキャストを引き起こす代入ではなく、その代わりに私はwindow
で定義されたStringプロパティを持っています。
WindowsでFirefox 45.0.2を再現できません: localStorage.getItem( "存在しないキー"); // nullを返します var x = localStorage.getItem( "存在しないキー"); x // - >はnullを返しません "null" – Giuseppe
使用OSX、編集済み。 –
他のブラウザではどうなりますか?私はあなたが 'null'と' 'null ''の間で混乱していると思います – Rayon