ES6解構賦值

2021-08-11 02:15:58 字數 2111 閱讀 5981

陣列的解構賦值

陣列的解構賦值需要左邊的變數結構需要等於右邊的值的結構,即給對應位置的變數宣告對應位置的值,變數的取值由位置決定

只要某種資料型別具有迭代器(iterator)介面,就可以使用陣列的解構賦值,不一定非是陣列

es6中具有iterator介面的資料型別有:陣列,類陣列物件,字串,set,map,generator函式

注:物件不具有iterator介面,需要自己配置

var [a,b,c] = ['a','b'];

console.log(a); //a

console.log(b); //b

var [a,[[b],c]] = [1,[[2],3]];

console.log(a); //1

console.log(b); //2

console.log(c); //3

//不完全解構,左邊只是右邊的一部分,但是模式是正確的

var [a,,c] = ['a1','b1','c1','d1'];

console.log(a); //a1

console.log(c); //c1

var [a,...b] = ['a2','b2','c2','d2'];

//rest引數:...b 獲取多餘的陣列元素,組成乙個新陣列,常用於函式引數中,作用與arguments類似,arguments是類陣列

console.log(a); //a2

console.log(b); //['b2','c2','d2']

var [a,b,...c] = ['a3'];

//rest引數必須是最後乙個元素

console.log(a); //a3

console.log(b); //undefined 解構不成功就是undefined

console.log(c); // rest引數解構不成功是空陣列

//字串具有iterator介面

var [a,b,c] = 'hello';

console.log(a); //h

console.log(b); //e

console.log(c); //l

var [a,b,c] = new set(['aa','bb','cc']);

console.log(a); //aa

console.log(b); //bb

console.log(c); //cc

物件的解構賦值

物件的屬性沒有次序,變數必須與屬性同名,才能取到正確的值,即變數名與屬性名一一對應,次序不重要

var  = 

console.log(foo); //bbb

console.log(bar); //aaa

var =

console.log(foo); //undefined 因為變數與屬性名不一致

//解決辦法

//在變數前指定對應的屬性名使用:隔開

var =

console.log(foo); //ddd foo指向baz屬性對應的值

//還可以用於巢狀結構物件, 不過應該很少會這麼做吧。。。

var obj =

]}var

]} = obj;

console.log(x); //gary

console.log(y); //guo

如果是先宣告了變數再進行物件解構賦值則需要加上括號,否則js回你認為{}是乙個**塊,而不是解構賦值

var bar;

= //syntaxerror: expected expression, got '='

console.log(bar);

var bar;

( = )

console.log(bar); //111 實際開發中不推薦這麼做

物件解構賦值的小應用:求最大值

//正常方法

var arr = [2,5,1,8,4,2];

//簡化

var = math;

即是將現有方法賦值到變數上使用

ES6 解構賦值

陣列的解構賦值 let a,b 12,13 let a,b,c d 13,15,16 let a,b c 78,12 23 let x,y 1,3,5 x 1,y 3 let x,y,z a x a,y undefined z let h,b 1,2,3,4 1,2,3,4 預設值 let x tr...

ES6解構賦值

一 基本用法 解構 destructuring 按照一定的模式,從陣列或者物件中提取值,對變數進行賦值。let par1,par2,par3 1,2 console.log par1,par2,par3 1 2 不完全解構時par3對值為undefined 解構賦值允許指定變數對預設值。let pa...

es6解構賦值

coding changes the world accumulating makes yourself 主要從三個方面講述 陣列式的解構賦值 物件式的解構賦值 函式中的解構賦值 preface 現今的變數宣告語法十分的直接 左邊是乙個變數名,右邊可以是乙個陣列 的表示式或乙個物件 的表示式,等等。...