015年6月,ECMAScript 6正式通過,成為國際標準。盡管在目前的工作中還沒有使用ES6,但是每項新技術出來總是忍不住想嘗嘗鮮,想知道ES6能為前端開發(fā)帶來哪些變化?對自己的工作有哪些方面可以提升。剛好看到阮一峰的《ES6標準入門》,便順著這本書嘗試著ES6的各種新特性。
ES6的各種新特性的兼容性查詢http://kangax.github.io/compat-table/es6/
盡管我們的瀏覽器還不一定完全支持ES6代碼,我們可以使用Babel轉碼器,在這里我們使用命令行轉碼babel-cli,命令行$ npm install --global babel-cli安裝babel-cli

let和const命令

let命令

ES6新增了 let 命令,用來聲明變量。它的用法類似于 var ,但是所聲明的變量,只在 let 命令所在的代碼塊內(nèi)有效。let不像var那樣會發(fā)生“變量提升”現(xiàn)象。所以,變量一定要在聲明后使用,否則報錯。

{
    let a = 10;
    var b = 1;}a // ReferenceError: a is not defined.b // 1

ES6明確規(guī)定,如果區(qū)塊中存在 let 和 const 命令,這個區(qū)塊對這些命令聲明的變量,從一開始就形成了封閉作用域。凡是在聲明之前就使用這些變量,就會報錯。
總之,在代碼塊內(nèi),使用let命令聲明變量之前,該變量都是不可用的。這在語法上,稱為“暫時性死區(qū)”(temporal dead zone,簡稱TDZ)。
let不允許在相同作用域內(nèi),重復聲明同一個變量。let 實際上為JavaScript新增了塊級作用域。 ES6引入了塊級作用域,明確允許在塊級作用域之中聲明函數(shù)。

const命令

const 聲明一個只讀的常量。一旦聲明,常量的值就不能改變。
const 命令聲明的常量也是不提升,同樣存在暫時性死區(qū),只能在聲明的位置后面使用。

        		

網(wǎng)友評論