変数の昇格と関数の昇格

3092 ワード

1、変数の昇格
ES 6の前に、JavaScriptはブロックレベルのスコープがありません.グローバルスコープと関数スコープだけがあります.変数が昇格します.変数宣言はそのスコープの最初の部分に引き上げられます.  
    console.log(a);//undefined
       var a=1;
       console.log(a)  //1  
    function fn () {
      console.log(a); // undefined
      var a = 'a';
      console.log(a); // a
     }
      fn();
以上の印刷結果になるのは、jsの変数がアップグレードされたためで、実際に上のコードは以下の通りに実行されます.
   var a; //     ,        ,      ,     
    console.log(a); // undefined
    a = '1'; //      
    console.log(a); //    1
 
    function fn () {
          var a; //
          console.log(a);// undefined
          a = 'a';
          console.log(a);// a
   }
    fn();
 
2、関数アップ
jsには関数を作成する方法が二つあります.関数宣言式と関数の字面量式です.関数宣言のみ関数アップグレードが存在します.例えば:
console.log(f1); // function f1() {}   
console.log(f2); // undefined  
function f1() {}
var f2 = function() {}
以上の印刷結果があるのは、jsの関数が向上したため、コードは実際に以下の通りに実行されます.
function f1() {} //     ,               
console.log(f1);   
console.log(f2);//  f2       
var f2 = function() {}
 
  
転載先:https://www.cnblogs.com/xumqfaith/p/7809833.html