Js 語言中 變量提升問題

變量提升: 提升變量的聲明。

函數聲明式: 像這種形式: function foo() {}; 會發生變量提升。
函數表達式: var fn=function fn(){};  不會發生變量提升。
var a = 1; 會將 a 的聲明提升
a = 1; 等價於 window.a = 1;

代碼解析:

function test() {
      a = 5; 
      log(a);    
      log(window.a); 
      var a = 10;
      log(a); 
    }
    test();

上面代碼執行過程>>>>>>>
  1.將var 的變量提升聲明 ,提升到當前的範圍內最高作用域中,
     此時a的聲明被提升到function的作用域中(如不var:函數內的 a 會放到window下 : window.a = 52.賦值5 給a
  3.打印a 會出現5
  4.打印window.a 會出現undefined(爲什麼打印出undefined,因爲最開始時將var 的變量聲明提升到了當前的function作用域中)
  5.將 10 重新賦值給 a
  6.打印a 結果 10

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章