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

5278 ワード

変数の昇格と関数の昇格:変数宣言または関数のすべてのコードを現在のスコープ(グローバルスコープまたは関数スコープ)の最初の部分に引き上げます.
JavaScriptの関数ドメインは最小ドメイン範囲です.forループ、whileループ、if文、switch文の「{}」は作用領域ではありません.
注意:ここではES 6の前を指します.
一、変数の昇格
1.指す形式:var variable='昇格'(キーワード'var'が必要です.)
2.昇格の方式:「var variable」を現在の作用領域のトップに上げる;「variable='リフティング'は、もともと定義されていた位置にあります.
3.具体的なコード:
console.log(variable);
var variable = '        ';
console.log(variable);

function fn (){
  console.log(interiorVariable);
  var interiorVariable = '        ';
  console.log(interiorVariable);
}

fn();

//        
/*
var variable;   //    ,        ,      ,     
console.log(variable);    //undefined
variable = '        ';    //     
console.log(variable);    //        

function fn () {
  var interiorVariable;   //    ,        
  console.log(interiorVariable);    //undefined
  interiorVariable = '        ';    //           
  console.log(interiorVariable);    //        
}*/
二、関数アップ
1.関数の昇格とは、形式:function fn(){…};(関数宣言の形式でなければなりません.関数式ではありません.)
2.関数のアップグレードの方式:「function fn(){...」全体の関数宣言コードブロックを現在のスコープのトップに引き上げ、元の位置はこのコードが存在しないようにします.
console.log(f1);    //    ,              
f1(); console.log(f2); function f1(){ console.log(' f1。。。'); } var f2 = function () { console.log(' f2。。。'); }; (function () { console.log('closure'); a = 'aaa'; var a = 'bbb'; console.log(a); })(); // /* function f1(){ console.log(' f1。。。'); } var f2; console.log(f1); f1(); f2 = function(){ console.log(' f2。。。'); }*/
参考文章:https://www.cnblogs.com/kawask/p/6225317.html