本文章屬于個(gè)人對(duì)es6一些比較常用的語(yǔ)法的總結(jié)歸納,其主要參考阮一峰大神的ECMAScript6入門 晶丘,如有哪里理解不對(duì)或者不透徹的地方,還請(qǐng)批評(píng)指正~
ps:推薦使用es6在線調(diào)試
<b>let 和 const</b>
1.let聲明的變量只有在當(dāng)前代碼塊成效,而且不具備變量提升(即代碼塊中有l(wèi)et聲明的變量提前使用會(huì)報(bào)錯(cuò));
{
console.log(a) // a is not defined
console.log(b) // 2
let a = 1;
var b = 2;
}
2.let同一作用域內(nèi)不允許重復(fù)聲明;
3.const聲明一個(gè)只讀常量攀痊,一旦聲明躬审,無(wú)法更改;
4.const聲明一個(gè)變量的時(shí)候遭殉,必須初始化,而且該變量只能在當(dāng)前作用域有效;
5.const聲明一個(gè)符合類型的數(shù)據(jù)時(shí)(主要是對(duì)象和數(shù)組),保存的是變量的內(nèi)存地址,只能保證這個(gè)地址固定,不能保證數(shù)據(jù)結(jié)構(gòu)不變;
const o = {};
o.name = 'hello'; //可以給對(duì)象添加屬性
console.log(o); // { "name" : "hello" }
o = {}; //報(bào)錯(cuò),因?yàn)閛的內(nèi)存地址不能改變
6.可以使用 Object.freeze()方法來(lái)凍結(jié)一個(gè)對(duì)象或者對(duì)象的某個(gè)屬性;
7.ES5聲明變量的方式有兩種 : var 和 function; ES6聲明變量的方式有六種 : var let const function import class;
<b>變量的解構(gòu)賦值 </b>
1.ES6 允許按照一定模式,從數(shù)組和對(duì)象中提取值,對(duì)變量進(jìn)行賦值;
2.如果變量解構(gòu)不成功就會(huì)返回 undefined队秩;
3.只要某種數(shù)據(jù)結(jié)構(gòu)具有 Iterator 接口迷帜,都可以采用數(shù)組形式的解構(gòu)賦值火诸;
4.解構(gòu)賦值時(shí)可以指定默認(rèn)值 ( let [ foo = true ] = [] )盯荤;
5.如果數(shù)組的某個(gè)成員不嚴(yán)格等于( === ) undefined , 默認(rèn)值就不會(huì)生效;
let [x, y = 'b'] = ['a']; // x='a', y='b'
let [x, y = 'b'] = ['a', 'undefined']; // x = 'a' , y = 'undefined'
6.如果指定的默認(rèn)值是一個(gè)表達(dá)式,那么該表達(dá)式是惰性求值(即只有在使用到的時(shí)候才去求值);
7.默認(rèn)值可以引用解構(gòu)賦值的其他變量盾似,但該變量必須已經(jīng)聲明撰茎;
8.對(duì)象的解構(gòu)中,變量必須與屬性同名阿浓,才能取到正確的值,如果變量沒(méi)有對(duì)應(yīng)的同名屬性,則會(huì)導(dǎo)致取不到值震缭,最后等于undefined;
9.對(duì)象的解構(gòu)賦值是先找到同名屬性朝群,然后再賦給對(duì)應(yīng)的變量燕耿。真正被賦值的是后者踏志,而不是前者;
let { foo: baz , bar } = { foo: "aaa", bar: "bbb" };
foo // foo is not defined
baz // 'aaa'
bar // 'bbb'
上述例子中 foo 是匹配的模式,baz才是變量帆谍。真正被賦值的是變量baz窖剑,而不是模式foo 需了, bar之所以能匹配鹅颊,是因?yàn)閷?duì)象的解構(gòu)賦值是下面形式的簡(jiǎn)寫
let { foo: foo, bar: bar } = { foo: "aaa", bar: "bbb" }
10.變量的解構(gòu)賦值通常用于交換變量室叉,函數(shù)參數(shù)定義恼除,參數(shù)指定默認(rèn)值等踪旷,雖然解構(gòu)賦值雖然很方便,但是解析起來(lái)并不容易豁辉,如果使用不當(dāng)就會(huì)產(chǎn)生與預(yù)期值不同的問(wèn)題~