検索

ホームページ  >  に質問  >  本文

javascript - JS の関数プロモーションについて質問したいのですが?

次のコード:

リーリー

実行後の出力は未定義です。

if 条件を削除した後の出力は 2 番目の関数です

リーリー

関数がプロモートされたことがわかると、2 番目のコードでは、2 番目の a 関数が console.log(a) コードの前にプロモートされるため、2 番目の a 関数が実行されて出力されます。
しかし、コードの最初の部分で、なぜ unknown が出力されるのかわかりません。

代言代言2754日前639

全員に返信(3)返信します

  • 代言

    代言2017-06-12 09:32:06

    条件付き関数宣言は関数式と同じ方法で処理されます。したがって、条件付き関数宣言では、関数宣言のホイスティング特性が失われます。

    参考URL:/q/10...

    返事
    0
  • 怪我咯

    怪我咯2017-06-12 09:32:06

    if else ステートメントで function キーワードを使用して関数を宣言する場合、変数の昇格はブラウザーによって異なります。ここでは変数の宣言がプロモートされているだけで、else が削除されると純粋な関数スコープになります。

    リーリー

    返事
    0
  • 学习ing

    学习ing2017-06-12 09:32:06

    あなたの IIFE で

    リーリー

    は関数宣言ではなく関数式です。 if が削除されていない場合、conosle.log(a)、a は未定義変数 a を表します。https://developer を参照してください。モジラ..

    返事
    0
  • キャンセル返事