1. ホーム
  2. javascript

[解決済み] JavaScript「hoisting」[重複]。

2023-05-06 10:58:59

質問

私はJavaScriptの「hoisting」に出会いましたが、このコードの断片が実際にどのように機能するのか分かりませんでした。

var a = 1;

function b() {
    a = 10;
    return;

    function a() {}
}

b();
alert(a);

のような関数宣言は知っているのですが、( function a() {} ) のような関数宣言は、関数の先頭に吊り上げられることになります。 b の値を上書きしてはいけません。 a (関数宣言は変数宣言を上書きするが、変数の初期化は上書きしないため)そのため、アラートの値が1ではなく10になると予想したのです!

どのように解決するには?

  1. グローバルな a に設定されます。 1
  2. b() というのは
  3. function a() {} がホイストされ ローカル 変数 a をマスクして、グローバルな a
  4. ローカルな a に設定されます。 10 (関数を上書きして a )
  5. グローバルな a (まだ 1 ) が警告されます。