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

var および function キーワード

var a = 1;

リーリー

これらの JS コード行は実行時にエラーを報告しますが、その理由は何ですか?神に説明を求めてください

仅有的幸福仅有的幸福2711日前462

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

  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-19 10:31:08

    関数は JavaScript の最初の市民であるため、ここには関数のプロモーションがあります。上記のコードの最終的な実装は、次と同じ効果があります

    リーリー

    これにより、元の関数名が上書きされます。

    返事
    0
  • PHP中文网

    PHP中文网2017-05-19 10:31:08

    識別子が変数として宣言されています

    返事
    0
  • 高洛峰

    高洛峰2017-05-19 10:31:08

    まず、js について話しましょう。var a = 1 が表示された場合は、2 つのステップで解析する必要があります。まず、var a を現在のスコープの先頭まで上げてから、a = 1 になるまで下方向に解析します。値の割り当てを開始します

    これは、変数と関数が同じ名前を持つ問題です。簡単に言うと、JS エンジンの解析順序は次のとおりです。
    1. 変数と関数の宣言は現在のスコープの先頭に昇格します → var a ↑ と `function a( )
    {

    リーリー

    }`
    2. 次に、残りのコード `a=1;
    a()`,

    を解析します。

    返事
    0
  • 怪我咯

    怪我咯2017-05-19 10:31:08

    関数宣言が事前に行われるためです

    リーリー

    1) 関数宣言が先頭になります
    2) 変数宣言も先頭になります
    3) 関数宣言は変数宣言より先頭になります: (関数は変数の上にあります)
    4) 変数と代入ステートメントは一緒に記述した場合、js エンジンで解析すると、宣言と代入の 2 つの部分に分かれます。宣言は先頭に配置され、代入は元の位置に保持されます。5) 宣言された変数は繰り返し宣言されません。 。

    は次の

    と同等になります リーリー お役に立てば幸いです〜

    返事
    0
  • 漂亮男人

    漂亮男人2017-05-19 10:31:08

    多くの人がこれが変動昇進の問題であると述べていますが、その説明は完全に正しくありません。 var部分的な改善が行われ、全体として機能が向上します。参考までに

    次のようになります:

    リーリー

    返事
    0
  • キャンセル返事