ホームページ  >  記事  >  ウェブフロントエンド  >  Javascript var変数の暗黙的宣言方法の詳細説明

Javascript var変数の暗黙的宣言方法の詳細説明

怪我咯
怪我咯オリジナル
2017-07-06 11:32:501860ブラウズ

JavaScript では、変数を宣言するために var が使用されますが、この構文は厳密には必須ではなく、var で宣言せずに変数を直接使用することもできます。

などなど。たとえば、コードの特定の行で、宣言された変数 x を使用したいとします。その結果、入力またはスペルミスにより、変数は y と等価になります。実際の

プログラミングプロセスでは、この種のエラーを見つけるのが難しい場合があります。 さらに、今日、同僚の紹介で、この「暗黙の宣言」の別の問題点を知りました。現在のコンテキストでこの「暗黙的」宣言を行うと、JavaScript エンジンはまず現在のコンテキストを調べて、この変数が以前に宣言されているかどうかを確認し、宣言されていない場合は、前のコンテキストに移動して検索します。はまだ宣言されていません。見つかった場合、この変数は最終的にウィンドウ上で宣言されます。
例:


コードは次のとおりです:

window. y = "hello"; 
function func(){ 
y = "OH, NO!!!"; 
} 
func(); 
alert(window.y); //#=> display "OH, NO!!!"

コンテキスト内のいずれかのレイヤーにそのような「暗黙的に」定義された変数がある場合、そのレイヤー内の変数は、ウィンドウ上で新しい変数を生成せずに変更されます。 。 (この種のバグは、特にカプセル化されたより複雑なコードでは非常に厄介です)

例:



コードは次のとおりです:

var x = "window.x"; 
function a() { 
var x = "a's x"; 
var b = function() { 
var c = function() { 
//no var! 
x = "c's x:"; 
}; 
alert("before c run,the b.x:" + x); 
c(); 
alert("after c run, the b.x:" + x); 
}; 
alert("a.x is:" + x); 
b(); 
alert("after b function runed, the a.x is:" + x); 
}; 
alert("before a run, window.x:" + x); 
a(); 
alert("after a run, window.x:" + x);

次のレイヤーがあります: window、func a、func b、func c は常にネストされたレイヤーとして使用されます。 window->a->b->c

window と a の両方に

定義された変数
x があり、変数は b で定義されておらず、x は c で「暗黙的に」宣言されており、x は最終的に変更される変数の値。 JavaScript で変数を宣言するときは、その前に var を追加する必要があることに注意してください。

以上がJavascript var変数の暗黙的宣言方法の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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