ECMAScript6入門(一)

ECMAScript6發(fā)布已經(jīng)一年多了,但是由于很多瀏覽器兼容性的問(wèn)題,目前還沒(méi)有很好的對(duì)它進(jìn)行實(shí)現(xiàn),所以ECMAScript6暫時(shí)還沒(méi)有達(dá)到那種極其火熱的程度,但是筆者通過(guò)對(duì)ECMAScript6的學(xué)習(xí)發(fā)現(xiàn)ECMAScript6真的時(shí)候十分好用,希望早日能在各大瀏覽器上盛行。

ECMAScript6是什么?

JS可以分為ECMAScript、BOM、DOM三種,通過(guò)版本的迭代ECMAScript已經(jīng)發(fā)展到ES6的程度,如果說(shuō)HTML5是個(gè)標(biāo)準(zhǔn),那個(gè)IE10+、高版本瀏覽器就是對(duì)它實(shí)現(xiàn),換句話說(shuō),Javascript就是對(duì)ECMAScript標(biāo)準(zhǔn)的實(shí)現(xiàn),簡(jiǎn)寫為ECMA或者說(shuō)是ES

我們?nèi)绾问褂肊S6

因?yàn)榭紤]到瀏覽器的版本問(wèn)題,對(duì)ES6的兼容性不盡相同,下面我講介紹三種使用ES6的方法

  1. 在線編譯
    http://babeljs.io/repl/#babili=false&evaluate=true&lineWrap=false&presets=es2015%2Creact%2Cstage-2&code=
    https://google.github.io/traceur-compiler/demo/repl.html#
    注意:這種方法僅僅適用與在線的測(cè)試,開(kāi)發(fā)項(xiàng)目最好采用下面的辦法
  2. 添加腳本
  <script src="traceur.js"></script>//這兩個(gè)缺一不可
    <script src="bootstrap.js"></script>//這兩個(gè)缺一不可
    <script type="module">//type="module"需要寫上
  //這里寫你想要編寫的代碼
</script>
//注意:這里的bootstrap.js和那個(gè)boostrap框架可不是一個(gè)東西。不要混淆
  1. 如果是高版本瀏覽器,可能上面兩種方法都不必采用,我測(cè)試過(guò)高版本的chrome瀏覽器可以實(shí)現(xiàn)ES6的一些語(yǔ)法所以對(duì)瀏覽器不能實(shí)現(xiàn)的功能我會(huì)選擇第二種方法

ES6聲明變量let方法

在ES6中定義變量用 let

let a = 12;
alert(a);

這里let定義變量看似能和我們以前定義變量var 一樣使用但是實(shí)際上卻是有區(qū)別的
首先,它只能在塊級(jí)作用域里面生效,也就是說(shuō)在塊級(jí)作用域外就不能起作用

if(true){
    let a=12;
}
 alert(a); //這里會(huì)報(bào)錯(cuò)Uncaught ReferenceError: a is not defined

正是因?yàn)樵趬K級(jí)作用域中起作用所以在塊級(jí)作用域外無(wú)法使用,這個(gè)就是和var 定義的變量的最大區(qū)別,因?yàn)閘et自身的機(jī)制我覺(jué)得let最大的用處就是能當(dāng)作封閉空間來(lái)使用也就是說(shuō)上面的代碼可以等效于:

(function(){
  var a = 12;
})()

相比較為繁瑣的封閉空間,是不是使用塊級(jí)作用域let更好呢?
但是我們需要注意的是:

  1. let只有在塊級(jí)作用域里面生效
  2. 不允許重復(fù)聲明(重復(fù)聲明會(huì)報(bào)錯(cuò))

ES6常量定義const

使用const定義的是一個(gè)常量,因?yàn)閏onst定義之后就再也無(wú)法更改

const a = 12;
a = 1;
alert(a);//這里會(huì)報(bào)錯(cuò)
const a = 12;
const a = 1;
alert(a);//這樣依然會(huì)報(bào)錯(cuò)

所以我們?cè)谑褂胏onst的時(shí)候一定要注意:
const必須給初值因?yàn)槁暶髦笤僖矡o(wú)法修改,同時(shí)它不允許重復(fù)聲明
它的用途就是利用這種特性,防止意外修改變量,比如引入的庫(kù)名和組件名

ES6字符串連接新方法

個(gè)人覺(jué)得字符串拼接是個(gè)麻煩的事情,一個(gè)兩個(gè)還好,但是如果多了,有的時(shí)候真的應(yīng)接不暇,
以前我們字符串拼接的時(shí)候采用的方法是:

var a = 'bushi' ;
var str = 'kexi' + a + 'ni';
//個(gè)人感覺(jué)這種方式很好
var a = 'bushi' ;
var str = `kexi${a}ni`;

解構(gòu)賦值

按照一定模式,從數(shù)組和對(duì)象中提取值,對(duì)變量進(jìn)行賦值,這被稱為解構(gòu)。解構(gòu)賦值對(duì)處理一些數(shù)據(jù)非常擅長(zhǎng),比如處理后臺(tái)返回給我們數(shù)據(jù)

數(shù)組的解構(gòu)賦值:
let [a,b,c]=[12,15,3];
  console.log(a);  //12
  console.log(b);  //15
  console.log(c);  //3
  console.log(d);  //undefined
 var [a,[b,c],d]=[1,[3,5],7];
//注意:左面的結(jié)構(gòu)和右邊的結(jié)構(gòu)要一樣
對(duì)象的解構(gòu)賦值:
let {a,b,c}={a:3,b:12,c:7};
console.log(a,b,c);
//對(duì)象的解構(gòu)賦值可以不用考慮順序的問(wèn)題
解構(gòu)賦值還可以給默認(rèn)值:
function demo(json){
  /*var a=json.time || 1000;
  alert(a)*/
  var {a=800}=json;
  //當(dāng)沒(méi)有參數(shù)的時(shí)候默認(rèn)的json.a為800,類似于:
  /*var json = {};
  var a = json.a || 800;*/
  alert(a); 
}
demo({})
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容