Javascriptの変数アップ、関数アップ、変数アクセスの原則


1、変数の昇格
変数アップグレードとは?関数内で宣言された変数は、関数の最下端か中間宣言かに関わらず、その変数の宣言を関数の最上端(最初の行に相当)に引き上げますが、変数を引き上げるだけの宣言では、値は与えられません.
var num = 10;
fun(); //     undefined
function  fun(){
    console.log(num);
    var num = 20;
}

/*         :
    function  fun(){
        var num;
        console.log(num);
        num = 20;
    }
*/
2、関数アップ
関数アップとは?JavaScriptの はvarで作成された変数と同じで、それらの声明が先に声明されます.これにより、JavaScriptのが可能になります.これは関数の向上です.
func();
function func(){
    alert(“     !”);
}
/*
         :
function func(){
    alert(“     !”);
}
func();
*/
3、関数と変数が同名の場合の変数の昇格
alert(fun); //        :  fun   
function fun(){
    alert(“      ”);
}
var fun = “      ”;
alert(fun); //   :      

/*       alert    fun   ,    alert    “      ”?
   var      function                    ,         ,
             ,       ! */

/*
         :
function fun(){
    alert(“      ”);
}
alert(fun);
fun = “      ”;
alert(fun);
*/
4、変数検索原則(変数アクセス原則)
JavaScriptにおける変数のアクセス(検索)には原則があります.
1)、           (  )      ,        
2)、      ,          ,        
3)、        ,            ,       
4)、          ,         
var num = 123;
function foo1(){
    function foo2(){
        console.log(num);
    }
    /*   foo2 ,    foo2           num  ,             ( foo1)      foo1  ,
            ,         (     )   ,     ,     */
    foo2();
}
5、変数の昇格、変数検索メカニズムの経典面接問題
fun();

console.log(b);
console.log(c);
console.log(a);

functoin fun(){
    var a = b = c = 9;
    console.log(a);
    console.log(b);
    console.log(c);
}