塊級作用域

ES5沒有塊級作用域,只有全局作用域和函數(shù)作用域,由于這一點,變量的作用域甚廣,所以一進入函數(shù)就要馬上將它創(chuàng)建出來。這就造成了所謂的變量提升。

ES5的“變量提升”這一特性往往一不小心就會造成一下錯誤:

  1. 內(nèi)層變量覆蓋外層變量

    var tmp = new Date();function f() {  console.log(tmp);  if (false) {    //執(zhí)行則undefined
        var tmp = "hello world";
      }
    }
  2. 變量泄露,成為全局變量

    var s = 'hello';for (var i = 0; i < s.length; i++) {  console.log(s[i]);
    }console.log(i); // 5

往常我們往往是使用閉包來解決這一問題的(比如自執(zhí)行函數(shù))?,F(xiàn)在,基于這一問題,ES6增加了塊級作用域,所以不再需要自執(zhí)行函數(shù)了。

let 和 const

ES6是是向后兼容的,而保持向后兼容性意味著永不改變JS代碼在Web平臺上的行為,所以

延伸閱讀

學習是年輕人改變自己的最好方式-Java培訓,做最負責任的教育,學習改變命運,軟件學習,再就業(yè),大學生如何就業(yè),幫大學生找到好工作,lphotoshop培訓,電腦培訓,電腦維修培訓,移動軟件開發(fā)培訓,網(wǎng)站設計培訓,網(wǎng)站建設培訓學習是年輕人改變自己的最好方式