ブロックレベルのスコープの役割: グローバル変数と関数が多すぎることによって引き起こされる名前の競合を解決します。 JavaScript は繰り返しの宣言に目をつぶってしまい、実行結果にエラーが発生しますが、ブロックレベルのスコープでこの問題を解決できるため、各開発者はグローバル スコープの混乱を心配することなく独自の変数を使用できるようになります。
このチュートリアルの動作環境: Windows7 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。
中括弧 ({ と }) のペアで囲まれた一連のステートメントは、ブロックに属します。ブロック内で定義されているすべての変数は、コード ブロックの外部には表示されません。これをブロック レベル アクションと呼びます。ドメインなど一方、 if
および JavaScript にはブロックレベルのスコープがありません (es6 標準が登場する前、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 will は破棄されます。しかし、JavaScript では、変数 i は、outputNumbers() のアクティブ オブジェクトで定義されるため、定義された時点から関数内のどこからでもアクセスできます。
ブロックレベルのスコープは、多すぎるグローバル変数や関数によって引き起こされる名前の競合を解決できます。これは、JavaScript が繰り返しの宣言に目をつぶって (ただし、後続の宣言では変数の初期化を実行します)、結果として実行結果が発生するためです。何か問題が発生した場合、おそらくそれを見つけるために多大な労力を費やす必要があります。
多くの開発者によって作成された大規模なアプリケーションでは、プライベート スコープを使用することで、各開発者はグローバル スコープを台無しにすることを心配せずに独自の変数を使用できます。
js にはブロックレベルのスコープはありませんが、クロージャ/匿名関数を使用してブロックレベルのスコープを模倣することができます。
ブロック レベル スコープ (プライベート スコープと呼ばれることが多い) の匿名関数の構文は次のとおりです。
(function(){ //这里是块级作用域 })();
上記のコードは、匿名関数を定義し、すぐに呼び出します。関数宣言を一対のかっこで囲むと、それが実際には関数式であることを示します。その直後に別の括弧のペアがあると、この関数がすぐに呼び出されます。
匿名関数を使用して JavaScript でブロックレベルのスコープを実装する例
function outputNumbers(count){ (function(){ for(var i=0;i<count;i++){ alert(i); } })(); alert(i); //导致错误! }
この例では、匿名関数で定義された変数は実行の終了時に破棄されます。したがって、変数 i はループ内でのみ使用でき、使用後は破棄されます。この匿名関数はクロージャであり、含まれるスコープ内のすべての変数にアクセスできるため、変数 count はプライベート スコープでアクセスできます。
どこにいても、変数が一時的に必要な限り、プライベート スコープを使用できます
[関連する推奨事項:JavaScript 学習チュートリアル #]
以上がJavaScript のブロック レベル スコープの用途は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。