Javascriptの変数アップと関数アップ

9962 ワード

Javascriptの変数アップと関数アップ
JavaScriptがコードを実行する過程では、上から下へコードを実行します.コードを実行する前に、変数のリフティングや関数の向上などの前処理プロセスがあります.
一、変数の昇格
私たちは通常次のコードに出会います.

console.log(a); //    :undefined

var a="mr gao";

console.log(a);//    :mr gao



function demo(){

console.log(a);//    :undefined

var a="demo";

console.log(a);//    :demo



}

demo();



実はjavascriptは前処理過程の時に声明の変数を対応する作用領域のトップに引き上げます.したがって、上記のコードは以下のようになります.

var a; //    ,              ,          。

console.log(a); //    :undefined

a="mr gao";

console.log(a);//    :mr gao



function demo(){

var a;

console.log(a);//    :undefined

a="demo";

console.log(a);//    :demo



}

demo();

二、関数アップ
関数のアップグレードを知る前に、関数宣言のいくつかの方法を知っておく必要があります.

//1:      

function funName(){



}



//2:     

}

var funName=function(){



}

//3:      



var funcName=new Function();



関数宣言のみが関数のスコープの向上を使用します.
例:
(1)変数の昇格



demo();//   :undefined

var age=20;//                 

function demo() {

console.log(age);//undefined

var age=30;

}

//       

var age;

function demo() {

var age;

console.log(age);

age=30;

}

demo();

age=20;

(2)同じ関数名変数の昇格

function demo(){

console.log("        ")

}

demo();

function demo(){

console.log("        ")

}

demo();



//     :                 

//     :

function demo(){//   demo          ,     demo        ,     demo  

console.log("        ")

}

demo()//     demo  

demo()//     demo  



(3)関数名と変数名の競合:関数名優先度が高い(関数優先)



console.log(demo);



var demo="    ";

function demo (){

console.log("    ");

}

//     :

ƒ demo(){

console.log("    ");

}

原文をご覧ください.もっと多くの文章をクリックしてください.
参考:
  • JavaScript解析器、プレ解析、変数アップ、関数アップ