論理ORを使ってオブジェクトを宣言するとき、私は奇妙な動作をします。varキーワードと論理ORを持たない変数を宣言する
my_var = my_var || {}; // throws TypeError
私は
var my_var = my_var || {}; // returns empty object
var
キーワードを追加する場合は、なぜこれが?私は説明を見つけることができないようです。 my_var
はグローバルスコープなので、なぜvar
が動作を変更していますか?第二の状況では
もう少しコードを提供できますか? my_varは同じスコープ内のある時点でスクリプトの初期に定義されていますか?私はそう思うだろう。 –
はい、 'my_var'は実行の早い段階で宣言されるべきです。具体的には、別のjavascriptソースです。私はIE8でテスト中にこれに遭遇しました。 FireFoxは期待通りに動作しましたが、IE8では実行時間の問題が発生しました。この謎は、私がデバッグしようとしていたときに浮かび上がった。 –
これは、私が実際に明示的に未定義をチェックする正当な理由のようです。 – Kzqai