JavaScript--ブロックレベルスコープ
5525 ワード
参考文章1参考文章2
ブロックレベルのスコープは何ですか?
どのペアの花括弧({と})の語句集も一つのブロックに属しています.この中で定義されている変数は全部コードブロックの外で見られません.ブロックレベルのスコープと呼びます.例えばfor、while、if.
JavaScriptはブロックレベルのスコープを持っていません.すなわち、javascriptのコードブロックに変数を定義します.このコードブロックの外でもこの変数を使用できます.例えば、
なぜJavaScriptでブロックレベルのスコープを実現しますか?
ブロックレベルのスコープは多すぎる大域変数と関数による命名衝突を解決できます.JavaScriptは重複した声明を無視しています.(ただし、その後の声明の変数初期化を実行します.)ため、結果が間違っています.あなたは大きな力を使ってこのエラーを発見することができます.
多くの開発者によって作成された大規模なアプリケーションでは、プライベートスコープのアプリケーションは、全体的なスコープの混乱を心配することなく、開発者ごとに独自の変数を使用することができます.
JavaScriptはどうやってブロックレベルのスコープを実現しますか?
jsにはブロックレベルのスコープがないが、ブロックレベルのスコープをクローズド/匿名関数で模倣することができる.
ブロックレベルのスコープ(一般にプライベートスコープと呼ばれる)の匿名関数のシンタックスは以下の通りである.
JavaScriptにおいて、ブロックレベルのスコープを匿名関数で実現する例
いつプライベートエリアが使えますか?
どこにいても、一時的に変数が必要であれば、プライベートスコープを使用することができます.
理解を深める:javascript作用域のブロックレベルの作用域
ブロックレベルのスコープは何ですか?
どのペアの花括弧({と})の語句集も一つのブロックに属しています.この中で定義されている変数は全部コードブロックの外で見られません.ブロックレベルのスコープと呼びます.例えばfor、while、if.
JavaScriptはブロックレベルのスコープを持っていません.すなわち、javascriptのコードブロックに変数を定義します.このコードブロックの外でもこの変数を使用できます.例えば、
<script type="text/javascript">
var i=1;
if(i==1){
var b=2;
}
alert(b);// 2
function outputNumbers(count){
for(vari=0;i<count;i++){
alert(i);
}
alert(i); //
}
</script>
Java、C++などの言語では、変数iはforループのステートメントブロックに定義があり、ループが終了すると変数iは破棄されます.しかし、JavaScriptでは、変数iはoutput Numbers()の活動対象として定義されていますので、定義がありますから、関数の内部に随所にアクセスすることができます.なぜJavaScriptでブロックレベルのスコープを実現しますか?
ブロックレベルのスコープは多すぎる大域変数と関数による命名衝突を解決できます.JavaScriptは重複した声明を無視しています.(ただし、その後の声明の変数初期化を実行します.)ため、結果が間違っています.あなたは大きな力を使ってこのエラーを発見することができます.
多くの開発者によって作成された大規模なアプリケーションでは、プライベートスコープのアプリケーションは、全体的なスコープの混乱を心配することなく、開発者ごとに独自の変数を使用することができます.
JavaScriptはどうやってブロックレベルのスコープを実現しますか?
jsにはブロックレベルのスコープがないが、ブロックレベルのスコープをクローズド/匿名関数で模倣することができる.
ブロックレベルのスコープ(一般にプライベートスコープと呼ばれる)の匿名関数のシンタックスは以下の通りである.
(function(){
//
})();
上記のコードを定義し、直ちに匿名関数を呼び出しました.関数宣言をペアの括弧に含めます.これは実際に関数式です.続いているもう1つのペアの括弧は、すぐにこの関数を呼び出します.JavaScriptにおいて、ブロックレベルのスコープを匿名関数で実現する例
function outputNumbers(count){
(function(){
for(var i=0;i<count;i++){
alert(i);
}
})();
alert(i); // !
}
例では、匿名関数で定義された任意の変数は、実行終了時に破棄されます.したがって、変数iはサイクルでのみ使用でき、使用後は廃棄される.プライベートスコーンにアクセスできるのは、この匿名関数がクローズドされており、作用領域を含むすべての変数にアクセスできるからです.いつプライベートエリアが使えますか?
どこにいても、一時的に変数が必要であれば、プライベートスコープを使用することができます.
理解を深める:javascript作用域のブロックレベルの作用域