検索

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

JavaScript - 関数宣言セクションに関数があるのですが、よくわかりません。

これは js 昇格の例です
関数宣言にコードがあることを確認してください

リーリー

このコードには無効な構文があると言われています。ほとんどのブラウザは 2 番目のステートメントを返しますが、Firefox は最初のステートメントを返します。これはなぜですか?
関数式に変更できるのであれば、なぜそうなるのでしょうか?

リーリー
我想大声告诉你我想大声告诉你2697日前779

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

  • 黄舟

    黄舟2017-07-05 10:40:34

    最初のものは関数宣言ですが、関数は一般的に if-else で宣言されないためです

    2 番目の方法は、変数に匿名関数を代入することです。プロモーションなどというものはありません。

    返事
    0
  • 黄舟

    黄舟2017-07-05 10:40:34

    関数 xxx(){} を直接記述すると、同じ名前の関数が 2 つある場合、先頭で var xxx を 2 回実行することと同じになるため、無効になります

    返事
    0
  • 伊谢尔伦

    伊谢尔伦2017-07-05 10:40:34

    宣言プレフィックスとは関係ありません。当時、JavaScript の仕様はまだ ES5 であり、ブラウザーにはまだブロックレベルのスコープ (ES2016+) が実装されておらず、スコープレベルは関数レベルのみでした。だからあなたはそれを書きました

    リーリー

    によって書かれました リーリー

    本質的な違いはありません

    返事
    0
  • PHP中文网

    PHP中文网2017-07-05 10:40:34

    jsは事前に宣言されています! ! !関数は、宣言時にスコープの先頭で直接言及されます。 if にはスコープがないため、2 つの関数は 1 つのスコープであり、2 番目の関数が最初の関数を置き換えます。 ! 2 番目のコードでは、最初に変数 Sayhi を宣言し、if 判定の後に Sayhi に値を代入します。

    返事
    0
  • キャンセル返事