ホームページ > ウェブフロントエンド > jsチュートリアル > この JavaScript コードが「1」を返すのはなぜですか?

この JavaScript コードが「1」を返すのはなぜですか?

Susan Sarandon
リリース: 2024-12-22 08:34:10
オリジナル
1047 人が閲覧しました

Why Does This JavaScript Code Return

JavaScript 関数のスコープとホイスティング: 謎を解く

JavaScript の領域では、複雑なコードを解明するには関数のスコープとホイスティングを理解することが重要です。 「なぜこのコードは '1' を返すのですか?」という疑問を引き起こした例を詳しく見てみましょう。

var a = 1;

function b() {
    a = 10;
    return;

    function a() {}
}
b();
alert(a);
ログイン後にコピー

関数ホイスティング: 秘密を解明する

関数ホイスティングは、関数宣言をスコープの先頭に移動する興味深いメカニズムです。この例では、関数 b がグローバル スコープにホイストされ、次のようにモーフィングされます。

function b() {
    function a() {}
    a = 10;
    return;
}
ログイン後にコピー

変数スコープ: スコープに限定

さて、シェッドしましょう変数のスコープに焦点を当てます。このコードでは、a はグローバル スコープで var を使用して宣言され、その後 b 内で再定義されます。変数が関数内で宣言されている場合、その関数のスコープ内でのみアクセスできます。

この場合、b 内で再定義された変数 a は関数に対してローカルです。したがって、元のグローバル a は影響を受けません。

誤解されている動作: より深く掘り下げる

一見すると、宣言関数 a() {} は次のように見えるかもしれません。関数宣言。ただし、実際には、関数のようなオブジェクトを定義する var a = function() {}; と同等です。これは、関数 a() {} が a という名前の関数を作成するのではなく、既存の a 変数を新しい関数で再割り当てすることを意味します。

ホイスティングとスコープの統合

関数ホイスティングと変数スコープを組み合わせると、私たちのコードは本質的に次のことを行います。以下:

  1. b をグローバル スコープにホイストします。
  2. b 内にローカル変数 a を作成します。
  3. グローバル a を 10 に再割り当てします。
  4. 値を持つグローバル a に警告します1.

したがって、b 内で使用される a はグローバル a に影響を与えないローカル変数であるため、アラートには「1」が表示されます。

以上がこの JavaScript コードが「1」を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート