塊級作用域

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ù))。現(xiàn)在,基于這一問題,ES6增加了塊級作用域,所以不再需要自執(zhí)行函數(shù)了。

let 和 const

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

延伸閱讀

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