2016-04-25 12 views
0

OSXのFirefox 45 では、存在しないキーからlocalStorageの項目を取得すると、関数呼び出しはnullを返します。私はコンソールでこれをテストしました。Javascriptはなぜ変数代入時にnullにキャストするのですか?

代わりに呼び出し結果を変数に代入し、その値をコンソールに出力すると、"null"という文字列が得られます。

以前に定義されていない変数を変数に代入すると、呼び出し結果が文字列にキャストされるのはなぜですか? (コンソールで)

使用されるコード:

​​

編集:私のミス:両方のバージョンではOSX版Chrome 50.0.2661.86(両方ともnullを返す)

EDIT2で正しく動作するように思われます。テストで別の変数名を使用しました(具体的にはvar name)。ここで、コンソールに変数nameの値が返された場合は、が返されます。これはwindowという文字列型のプロパティで、デフォルトは"null"です。だから、それはキャストを引き起こす代入ではなく、その代わりに私はwindowで定義されたStringプロパティを持っています。

+0

WindowsでFirefox 45.0.2を再現できません: localStorage.getItem( "存在しないキー"); // nullを返します var x = localStorage.getItem( "存在しないキー"); x // - >はnullを返しません "null" – Giuseppe

+0

使用OSX、編集済み。 –

+0

他のブラウザではどうなりますか?私はあなたが 'null'と' 'null ''の間で混乱していると思います – Rayon

答えて

0

私は間違いました。

var name = localStorage.getItem("non-existing-key"); 
name 

さて、getItemnullではなく文字列を返すん:私は、使用される特定のコードは以下の通りでした。その場合、コンソールにnameの値を出力させることによって、実際にはwindow.namewindow.name on MDN参照)が得られます。これはデフォルトで"null"(文字列)です。

関連する問題