015年6月,ECMAScript 6正式通過(guò),成為國(guó)際標(biāo)準(zhǔn)。盡管在目前的工作中還沒(méi)有使用ES6,但是每項(xiàng)新技術(shù)出來(lái)總是忍不住想嘗嘗鮮,想知道ES6能為前端開(kāi)發(fā)帶來(lái)哪些變化?對(duì)自己的工作有哪些方面可以提升。剛好看到阮一峰的《ES6標(biāo)準(zhǔn)入門(mén)》,便順著這本書(shū)嘗試著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 命令,用來(lái)聲明變量。它的用法類(lèi)似于 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ì)這些命令聲明的變量,從一開(kāi)始就形成了封閉作用域。凡是在聲明之前就使用這些變量,就會(huì)報(bào)錯(cuò)。
總之,在代碼塊內(nèi),使用let命令聲明變量之前,該變量都是不可用的。這在語(yǔ)法上,稱為“暫時(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ū),只能在聲明的位置后面使用。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無(wú)線安全]玩轉(zhuǎn)無(wú)線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問(wèn)題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來(lái)看看(二) 2017-07-26