ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript の変数宣言は代入の前にあります

JavaScript の変数宣言は代入の前にあります

高洛峰
高洛峰オリジナル
2016-11-26 09:18:431125ブラウズ

以下のように
var a = 3;
実際には2つのステップがあります:
1 aを未定義に初期化します
2 aに値3を割り当てます

したがって、いくつかの「信じられない」現象が発生します。つまり、JSの変数が使用できるということです。最初に宣言してから宣言します。これは Java では許可されません。
System.out.println(a);
int a = 1;
コンパイルが失敗します。しかし、JS では次のようにすることができます。
alert(a);
var a;
未定義ですが、エラーは報告されません。これは、 a が実際に宣言されており、未定義であることを示しています。

「var a」のない「alert(a)」だけの場合、JS エンジンはエラーを報告します。
alert(a);
FFは以下の通りです

JavaScript の変数宣言は代入の前にあります

先に使用してから宣言することもできますが、代入の効果が失われます。以下の通り
alert(a);
var a = 1;
今回の出力は1ではなく未定義のままです。

別の例、
alert('a' in window); // true
var a;
コードは正式にはalertの後に記述されていますが、エンジンは依然としてvar宣言を最初に自動的に処理します。最終的な出力は true です。

これを理解すると、次のコードの結果を理解するのは難しくありません

if (!("a" in window)) {
var a = 1;
}
alert(a);


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。