条件式関数宣言:関数宣言の向上能力を喪失しました.


関数宣言の問題をよく知っています.JavaScriptシリーズを深く理解します.
  console.log(typeof foo);
  if (true) {
    function foo(){ return 1; }
  }
  console.log(typeof foo);
上記のコードはGeckoエンジンで「undefined」、「function」を印刷します.他のブラウザでは「function」、「function」を印刷します.
理由はGeckoがECMAScript以外のフィーチャーに加入しているからです.条件式関数宣言です.
参照のNoteに注意してください.条件式関数宣言は関数式の処理と同じです.したがって,条件関数宣言は関数宣言の向上特性を喪失した.
以上の理由に基づいて、条件文に関数宣言を入れ子にしないでください.
関数式にします.