ECMAScript 6入門讀書筆記二

2021-09-13 03:44:01 字數 1942 閱讀 8456

更加便利的從匿名物件或者陣列中,對變數進行賦值;

基本樣式,右邊資料型別必須是可迭代的型別。

let a = 1,

b = 2,

c = 3;

//等價於

//let [a, b, c] = [1, 2, 3];

對於let [a, b, c] = [1, 2, 3];就是按照[, , ,]這樣的模式一一對abc進行賦值

對於陣列型別的模式匹配取值還算簡單的,比較容易

設定預設值

用來對不匹配成功的變數賦初始值

let [a = 123] = ;      //a = 123

let [c, d = 123] = [1] //d = 123

let [b = 123] = [1]; //a = 1

上面例子說明一點:匹配成功時,不使用預設值,不成功或者值為undefined時使用預設值

let [d = c] = [1];      //d = 1

let [d = c] = ; //報錯

上面例子說明兩點:1.不能使用未宣告的變數進行預設值設定,2.在匹配成功時,引擎是不管它的,要不然就報錯了

個人理解認為,物件解構賦值時,key的模式匹配,對value變數的賦值,其右邊物件,可以不是迭代型別(個人猜測,有待商榷)

基本樣式:

let  = ;   //a = 1;

let = ; //c = 1;

實際上它是let = ;key的a是模式匹配,value的a是變數,用於成功後的賦值};對於這樣想要分別取1,,1這3個值,怎麼寫匹配模式

let } = }; //最簡單繁瑣的
可以簡化一下let } = };,

同理let ]} = ]};

規則允許左邊不存放任何變數名,也就是為空物件,沒有意義但又是合法的表示式

({} = [true, false]);

({} = 'abc');

({} = );

非變數宣告的解構必需用括號括起來,不然會報錯,如上是表示式,括起來就不會報錯

let  = "zxc";

let = "qwe";

console.log(b === string.prototype.tostring);

將"zxc" => new string("zxc"),再將其解構

function move( = {}) 

move(); //[3, 0]

move(); //[0, 0]

這個引數解構有兩個作用:1.x,y的預設值為0,0;2.move()引數預設值為{},所以當未輸入時傳入的實參為{}

不用於下面的

function move( = ) 

move() //[3, undefined]

move(); //[0, 0]

上面例子並沒有對x,y進行預設值的設定,只是對move(),傳入實參進行了的預設值設定

個人理解:從類似陣列或者物件的數值集合中快速提取自己想要的值

有趣的應用就是數值之間的交換

let a = 1,

b = 2;

[a, b] = [b, a];

console.log(a,b);

因為陣列的解構必須按順序來,不像物件的解構,按key模式匹配

其他應用有待自己對解構更加靈活的應用

ECMAScript 6入門類繼承筆記

看類繼承前,先回顧建構函式怎麼實現物件的繼承的 function f function son function inherit s,f inherit son,f let son new son 它實現了哪幾個功能 用來extends和super關鍵字,看乙個簡單的繼承 class a class...

EcmaScript 6 箭頭函式

es5 var total values.reduce function a,b 0 es6 var total values.reduce a,b a b,0 箭頭即乙個函式的簡化 es5 confetti btn click function event es6 confetti btn cli...

ECMAScript6 入門 物件的擴充套件

物件的擴充套件 1 屬性的簡潔表示 也就是說當物件的屬性和值同名時,可以縮寫為乙個 const foo bar const baz baz 等同於const baz 方法簡寫 const o 等同於const o 2 屬性名表示式 可以使用表示式定義物件的key 已知定義物件的屬性方法 方法一 ob...