天天看點

《ECMAScript 6 入門》【二、變量的解構指派】(持續更新中……)

前言:

讓我們看下es6的新文法解構,跟模式比對類似。

一、數組的解構指派

舉個例子給多個變量指派的寫法:

var a =1;

var b =2;

var c =3;

需要寫多個變量特别麻煩,我們先使用以前的簡化方法。

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

現在es6引入了解構,我們可以使用數組的解構指派來更簡便的進行指派。

1、完全解構

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

可以從數組中提取值,按照對應位置,對變量指派。本質上,這種寫法屬于“模式比對”,隻要等号兩邊的模式相同,左邊的變量就會被賦予對應的值。

接下來,我們再舉幾個例子:

// 1、一一對應

let [,v]=[,1];

console.log(v) // 1

// 2、可以利用擴充符合并數組項

let [a,…b]=[1,2,3];

console.log(a) // 1

console.log(b) //[2,3]

// 3、如果左邊不能一一對應右邊的話,使用擴充符并且位置在末尾時,列印的為空數組,c沒有對應,則是undefined;

let [a,c,…b]=[1];

console.log(a); // 1

console.log(b); // []

console.log©; // undefined

// 4、如果沒有一一對應的情況下,擴充符在中間,就會出錯 

let [a,...b,d,c]=[1];

這種情況也一樣

let [a,…b,c]=[1];

// Uncaught SyntaxError: Rest element must be last element

如果解構不成功,變量的值就等于undefined。在第4種情況中,我們把…b的位置放在中間,就會出錯,而放在末尾隻是列印空數組。

我們再舉幾個實際用到的例子,比如說交換值。以前交換值必須再聲明定義一個變量,就像這樣。

var a = 10;

var b = 20;

var temp = a;

a = b;

b = temp;

看起來,比較繞而且代碼長,現在我們使用了es6的解構,可以這樣。

let a = 10;

let b = 20;

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

2、不完全結構

接下來,我們來看下一個特殊的例子,叫做不完全解構。就是等号左邊的模式,隻比對一部分的等号右邊的數組

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

x // 1

y // 2

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

a // 1

b // 2

d // 4

3、預設值

let [x, y = 'b'] = ['a', 'c'];
console.log(y) // 'c'
let [x, y = 'b'] = ['a'];
console.log(y) // 'b'
let [x, y = 'b'] = ['a', undefined];
console.log(y) // 'b'           

複制

更多内容請見原文,原文轉載自:https://blog.csdn.net/weixin_44519496/article/details/119862313