検索

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

javascript - jsの実行順序は何ですか?

1. jsの実行順序が分かりません。以下のコードを実行してください。アラート開始時はaが宣言されていません。エラーを直接報告すべきではないでしょうか?この関数が最初に表示され、次に 10、次に 3 が表示され、最後にエラーが報告されるのはなぜですか?最初からエラーを報告すべきではないでしょうか?

リーリー

phpcn_u1582phpcn_u15822756日前710

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

  • ringa_lee

    ringa_lee2017-06-26 11:00:23

    クラスメイトに聞いてみたところ、その理由が分かりました
    まず、概念を理解する必要があります
    1. js では、変数宣言と関数宣言が事前に行われており、変数宣言よりも関数宣言の方が優れています。したがって、 a を宣言する前のalert(a) はエラーを報告しません。また、最初のアラートでは、変数 a ではなく関数 a が表示されます。
    2. 2 番目のアラートは、言うまでもなく、関数 a を実行するだけです。 var a=3;。所以a变成了3。
    4.最后报错是因为,执行到a();a进行了两次赋值,第一次是var a=3;,第二次是a=6;3. 3 番目のアラート。ここを実行する前に var a=3; が実行されたため、結果は 3 です。したがって、a は 3 になります。

    4. a(); a が 2 回割り当てられたため、最後のエラーが報告されました。1 回目は var a=3;、2 回目は a=6; とありますが、どう見ても a は関数ではないのでエラーが報告されます。 🎜

    返事
    0
  • 伊谢尔伦

    伊谢尔伦2017-06-26 11:00:23

    最初の出力では function 是因为作用域提升(hoisting)。
    第二个输出 10 是第二行 a() 的输出。
    第三个输出 3 是倒数第三行 alert(a) 的输出。
    最后一个报错是来自最后一行 a()。因为这时候 a 被重新赋值为数字 6,已经不是 function 了。执行 a() もちろんエラーが報告されます。

    返事
    0
  • 某草草

    某草草2017-06-26 11:00:23

    変数宣言は次のルールに注意してください。

    http://zonxin.github.io/post/...

    返事
    0
  • キャンセル返事