015年6月,ECMAScript 6正式通過,成為國(guó)際標(biāo)準(zhǔn)。盡管在目前的工作中還沒有使用ES6,但是每項(xiàng)新技術(shù)出來總是忍不住想嘗嘗鮮,想知道ES6能為前端開發(fā)帶來哪些變化?對(duì)自己的工作有哪些方面可以提升。剛好看到阮一峰的《ES6標(biāo)準(zhǔn)入門》,便順著這本書嘗試著ES6的各種新特性。
ES6的各種新特性的兼容性查詢http://kangax.github.io/compat-table/es6/
盡管我們的瀏覽器還不一定完全支持ES6代碼,我們可以使用Babel轉(zhuǎn)碼器,在這里我們使用命令行轉(zhuǎn)碼babel-cli,命令行$ npm install --global babel-cli
安裝babel-cli
let和const命令
let命令
ES6新增了 let 命令,用來聲明變量。它的用法類似于 var ,但是所聲明的變量,只在 let 命令所在的代碼塊內(nèi)有效。let不像var那樣會(huì)發(fā)生“變量提升”現(xiàn)象。所以,變量一定要在聲明后使用,否則報(bào)錯(cuò)。
{ let a = 10; var b = 1;}a // ReferenceError: a is not defined.b // 1
ES6明確規(guī)定,如果區(qū)塊中存在 let 和 const 命令,這個(gè)區(qū)塊對(duì)這些命令聲明的變量,從一開始就形成了封閉作用域。凡是在聲明之前就使用這些變量,就會(huì)報(bào)錯(cuò)。
總之,在代碼塊內(nèi),使用let命令聲明變量之前,該變量都是不可用的。這在語法上,稱為“暫時(shí)性死區(qū)”(temporal dead zone,簡(jiǎn)稱TDZ)。
let不允許在相同作用域內(nèi),重復(fù)聲明同一個(gè)變量。let 實(shí)際上為JavaScript新增了塊級(jí)作用域。 ES6引入了塊級(jí)作用域,明確允許在塊級(jí)作用域之中聲明函數(shù)。
const命令
const 聲明一個(gè)只讀的常量。一旦聲明,常量的值就不能改變。
const 命令聲明的常量也是不提升,同樣存在暫時(shí)性死區(qū),只能在聲明的位置后面使用。
網(wǎng)友評(píng)論