変数を宣言するために 'var' を使用するのはオプションですか? [重複] 質問する

変数を宣言するために 'var' を使用するのはオプションですか? [重複] 質問する

「var」はオプションですか?

myObj = 1;

と同じ ?

var myObj = 1;

私のテストでは、両方とも機能することがわかりましたが、varオプションだと思います。そうですか?

ベストアンサー1

これらは意味が異なります。 を使用すると、var変数は、現在のスコープ (関数など) 内で宣言されます。 を使用しない場合var、変数はスコープのレイヤーを上に向かって移動し、指定された名前の変数またはグローバル オブジェクト (ブラウザーで実行している場合は window) に遭遇すると、そこに追加されます。これで、変数はグローバル変数と非常によく似たものになります。ただし、 を使用すると削除できますdelete(おそらく、 を使用しなかった他のユーザーのコードによってvar)。 をグローバル スコープで使用するとvar、変数は完全にグローバルになり、削除できなくなります。

これは、私の意見では、JavaScript の最も危険な問題の 1 つであり、非推奨にするか、少なくとも警告よりも警告を上げる必要があります。その理由は、var共通の変数名をグローバル オブジェクトにバインドすることを忘れがちで、誤ってバインドしてしまう可能性があるためです。これにより、奇妙でデバッグが困難な動作が発生します。

おすすめ記事