JavaScriptいくつかのスコープ問題
1110 ワード
1、
2、
3、
まとめ:
1.JavaScriptには二つの作用領域しか存在しません.グローバルスコープwindowと関数スコープfunction、外部のfunction domannネスト内部のfunction domann、これは閉包の原理です.
2.function domainではvarを使用せずに事前に宣言し、直接に値を割り当てたり呼び出したりする変数は前のロールエリアの同名変数にアクセスして、windowグローバルdomannまで行って、見つけられない場合はエラーを報告します.
3.var宣言変数の実行優先度が一番高いので、例3でtest()で初めてconsolie.log(a)が実行される前に、var宣言が事前に実行されましたが、a=1赋値は実行されていませんので、undefinedを出力します.
var a = 0 ;
function f(){
a = 1;
console.log(a); // a
}
console.log(a); // a
f();
出力結果は:1、Functionで直接割当を宣言していないaが作用領域windowのグローバル変数であることがよく分かります.2、
var a = 0;
function test(){
var a;
console.log(a); // a
a = 1;
console.log(a); // a
}
test();
conosle.log(a); // a
出力結果は:undefined 1 03、
var a =0;
function test(){
console.log(a);
var a = 1;
console.log(a);
}
test();
console.log(a);
出力結果は:undefined 1 0 まとめ:
1.JavaScriptには二つの作用領域しか存在しません.グローバルスコープwindowと関数スコープfunction、外部のfunction domannネスト内部のfunction domann、これは閉包の原理です.
2.function domainではvarを使用せずに事前に宣言し、直接に値を割り当てたり呼び出したりする変数は前のロールエリアの同名変数にアクセスして、windowグローバルdomannまで行って、見つけられない場合はエラーを報告します.
3.var宣言変数の実行優先度が一番高いので、例3でtest()で初めてconsolie.log(a)が実行される前に、var宣言が事前に実行されましたが、a=1赋値は実行されていませんので、undefinedを出力します.