ES6解構賦值

2021-09-17 02:23:20 字數 2475 閱讀 6306

一、陣列解構賦值:

var a = 1;

var b = 2;

var c = 3;

解構賦值:

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

let [a,b,c] = new set([1,2,3]);

也可巢狀賦值:

let [foo,[[bar],[baz]]] = [1,[[2],[3]]];

結果:foo // 1; bar // 2; baz // 3;

let [,,third] == ["foo","bar","baz"];

結果:third // "baz";

let [head, ...tail] = [1,2,3,4];

結果:head // 1;

tail // [2,3,4];

let [x, y, ...z] = ['a'];

結果:

x // "a";

y // undefined;

z // ;

如果解構不成功,變數就會等於undefined。

var [foo] == ; foo // undefined

var [bar,foo] == [1]; foo // undefined

不完全解構

let [x,y] = [1,2,3];

x // 1

y // 2

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

a // 1;

b // 2;

c // 4;

只要某種資料解構具有迭代介面,都可以採用陣列形式的解構賦值。

解構賦值允許指定預設值。

var [foo = true] = ; foo // true

let [x, y='b'] = ['a']; //x = 'a'; y = 'b'

let [x, y='b'] = ['a',undefined]; //x = 'a'; y = 'b'

es6內部使用(===)完全等於來判斷乙個位置是否有值,所以,如果乙個陣列成員不嚴格等於undefined,預設值不會生效。

var [x = 1] = [undefined]; x // 1

var [x = 1] = [null]; x // null

上面如果乙個陣列成員是null,預設值就不會生效,因為null不嚴格等於undefined

解構賦值的惰性取值:

function f();

let [x = f()] = [1];

x // 1

上面**中x可以取到值1,所以就不會執行表示式,所以x = 1,等價於下面**

var x;

if([1][0] === undefined)else

變賦值之前必須宣告

二、物件解構賦值

var = ;

foo // "aaa"

bar // "bbb"

*物件的解構賦值與陣列乙個重要的不同。陣列必須是按次序排列,變數取值由未知決定;

而物件的屬性沒次序,變數必須與屬性同名,才能取到正確的值。例如:

陣列:let [x,y] = [1,2]; // x = 1, y = 2

物件:var = ; // foo = "bbb", bar = "aaa"

var = // baz = "undefined"

如果變數名與屬性名稱不一致;必須寫成下面這樣:

var = ; // baz = "aaa"

let和const不允許重新宣告!

其他同陣列解構賦值。

三、字串解構賦值

const [a,b,c,d,e] = "hello"; // a="h", b="e"... e="o";

類似與陣列物件都有長度(length屬性);因此還可以對這個屬性解構賦值

let = "hello"; // len = 5

四、數值和布林值得解構賦值

let = 123;

s === number.prototype.tostring // true

let = true;

s === boolean.prototype.tostring // true

五、函式引數的解構賦值

function add([x,y])

add([1,2]); // 3

[[1,2],[3,4]].map(([a,b]) => a+b); // [3,7];

函式引數的解構也可以使用,預設值

function move( = {})

move(); // [3,8];

move(); // [3,0];

move({});//[0,0]

move();//[0,0]

undefined會觸發函式的預設值

[1,undefined,3].map((x = "yes")=>x) // [1,"yes",3]

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 現今的變數宣告語法十分的直接 左邊是乙個變數名,右邊可以是乙個陣列 的表示式或乙個物件 的表示式,等等。...