JavaScript 関数のスコープとホイスティング: 隠されたメカニズムを明らかにする
JavaScript のスコープとホイスティングに関連する複雑な例に遭遇しました。より明確な理解を得るために、これらの概念をさらに深く掘り下げてみましょう。
関数ホイスティング
ホイスティングは、関数宣言を、それを含むスコープの先頭に持ち上げます。あなたの例では:
function b() { a = 10; return; function a() {} }
インタプリタはこのコードを次のように再配置します:
function b() { function a() {} a = 10; return; }
これは、内部関数 a() 宣言が効果的に b() の先頭に配置されることを意味します。コードの後半に表示されますが、関数。
変数スコープ
JavaScript では、変数のスコープをグローバルまたはローカルに設定できます。グローバル変数はプログラム内のどこからでもアクセスできますが、ローカル変数は定義関数のスコープ内に限定されます。
関数宣言の奇妙なケース
コード内、 b() 内の内部関数 a() 宣言は即時関数として解釈されます。呼び出し:
var a = function () {};
これにより、b() 関数内にローカル変数 a が効果的に作成され、グローバル変数 a がシャドウされます。
すべてをまとめて実行
ホイスティングと変数スコープの概念を組み合わせると、実行シーケンスを次のように視覚化できます。
以上がJavaScript 関数のホイストとスコープは変数の代入と取得にどのような影響を与えますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。