JavaScript には、ブロックレベルのスコープという概念がありません。ブロックレベルのステートメントで定義された変数は、実際にはステートメント内ではなく、それを含む関数内に作成されます。変数宣言を、変数が使用される場所の近くに置く代わりに、関数本体の先頭に置くことができます。
このチュートリアルの動作環境: Windows 10 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。
JavaScript にはブロックレベルのスコープの概念がありません。これは、ブロックレベルのステートメントで定義された変数が、実際にはステートメント内ではなく、それを含む関数内で作成されることを意味します。
コード セグメント 1:
var scope="global"; function f(){ console.log(scope); var scope="local" console.log(scope); } f();
何が出力されますか?
答え: 未定義のローカル
コード セグメント 2:
var scope="global"; function f(){ var scope; console.log(scope); scope="local" console.log(scope); } f();
何が出力されますか?
答え: 未定義のローカル
コード セグメント 3:
var scope="global"; function f(){ console.log(scope); } f();
何が出力されますか?
回答: global
上記 3 つの例を通して、「JavaScript にはブロックレベルのスコープはありませんが、関数のスコープはあります」という文を説明します。
JavaScript では関数スコープの特性上、コードセグメント 1 とコードセグメント 2 は同等であり、ローカル変数は関数本体全体で定義されます。コードセグメント 1 の関数本体の変数スコープは、同じ名前のグローバル変数をカバーしており、プログラムが var ステートメントを実行する場合にのみ、ローカル変数スコープが真に
割り当てられます。したがって、上記のプロセスは、変数の初期化を元の位置、つまりコード セグメント 2 に残したまま、関数内の変数宣言を関数本体の先頭に「進める」ことと同等です。
ブロックレベルのスコープを持つプログラミング言語では、一般に、変数宣言と変数を使用するコードを小さなスコープ内でできるだけ近くに保つことが良いプログラミングです。
習慣。 JavaScript にはブロック レベルのスコープがないため、プログラマによっては、変数が使用される場所の近くに宣言を配置するのではなく、意図的に関数本体の先頭に変数宣言を配置することがあります。このアプローチ
により、ソース コードにはさまざまな知識の範囲が非常に明確に反映されます。
関連する推奨事項:
JavaScript 学習チュートリアル以上がJavaScriptにはブロックレベルのスコープがありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。