javascriptの変数宣言と関数アップ

2183 ワード

javascriptの変数宣言と関数アップを理解するには、javascriptコードに対するブラウザの処理過程を理解することが重要である.
変数と関数を含む宣言はコード実行時に先に処理されます.
例:
エディタに「var a=1」と書きます.
ブラウザの処理プロセスは、(先に変数を宣言する)var aです.(再変数の割り当て)a=1
1.変数のアップグレード:
例:

function test(){

a = 2;

var a;

console.log(a) //2

}
実際のブラウザの処理プロセス:

function test(){

      var a;

      a = 2;

     console.log(a)  //2

}

例2:

function test(){

    console.log(a)

     a = 2;

     var a ;

}

実際のブラウザの処理プロセス:

function(){

       var a;

       console.log(a)  //undefined   a      

       a = 2;

}

2.関数宣言の昇格:
関数宣言のアップグレードが変数のアップグレードより優先的で、同じような宣言の場合、前後の順序にかかわらず、関数の宣言は変数の宣言を上書きします.
例1:

var a = 1;

      function f(){

                console.log(a);

           var a = 2;

            console.log(a);

}  f();

実際のブラウザの処理プロセス:

            var a;

              a = 1;

                       function f(){

                                var a ;

            console.log(a)

//  a    console.log(a)          ,       ,    a   undefined

           a = 2;

      console.log(a)

//    console.log(a)    ,a       2,        2

}

例2:
関数宣言の構文:

   f("hello");

      function f(a){

                console.log(a)//hello

}

      :

      f("hello");

      var f = function (a){

              console.log(a)//   。f is not function

}

なぜエラーが発生したのか、ブラウザの処理過程を理解してください.

    var f;

           f("hello");//  ,f      ,            f is not function,              

           f = function (a){

                console.log(a)

}

例3:

getName();

     var  getName = function(){

              console.log("  ");

}

function getName(){

         console.log("  ");

}

getName();

例3ブラウザはどのように処理しますか?

var getName;//          ,      

function getName(){//            

    console.log("  ")

}

getName();//      ,  “  ”

getName = function() {//    

console.log("  ")

}

getName()  //    ,                       ,      。

誤りがあったら指摘してください.