JavaScript_javascript のヒントで変数を宣言するときに var キーワードを追加する必要があるのはなぜですか

WBOY
リリース: 2016-05-16 16:34:52
オリジナル
1246 人が閲覧しました

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

コードをコピーします コードは次のとおりです:

var x = "XX"; y="xxx";

等々。たとえば、コードの特定の行で、宣言された変数 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 は常に階層的に入れ子になっています。ウィンドウ->a->b->c

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!