ES6的陣列結構賦值
阿新 • • 發佈:2019-01-11
基本用法
* ES允許按照一定模式,從事狐族和物件中提取值,對變數進行賦值。這被稱之為結構。*
通常,我們賦值一般都會採用以下的這種方式
var a = 3;
var b = 'string';
// es6寫法
var [a,b] = [3,'string'];
下面是以巢狀陣列賦值的例子
let [a,b,c] = ["name","sex","age"];
a // name
b // sex
c // age
如果解構不成功,變數會變成undifined
let [a] = [];
let [b,a] = [1 ];
以上的例子中都屬於解構不成功的情況,a的值為undifined
另一種情況是不完全解構,例子如下
// 第一種情況
let [a,b] = [1,2,3];
a // 1
b // 2
let [a,[b],c] = [1,[2,3],4];
a // 1
b // 2
c // 4
如果等號右邊不是陣列,亦或者右邊不是可遍歷的解構。則會報錯。
let [a] = 2;
let [a] = 'a';
let [a] = false;
let [a] = {}
let [a] = null;
解構賦值不僅適用於let,同時也適用於const和var
預設值
解構賦值允許給出預設值
let [a = 2] = [];
a // 2
預設值可以引用解構賦值的其他變數,但該變數必須已經宣告。
let [x =1,y=x] = []; //x = 1; y = 1;
let [x=1,y=x] = [2]; // x=2;y=2;
let [x=1,y=x] =[1,2] // x=1;y = 2;
let [x=y;y=1] =[] // 報錯 因為x=y時,y並沒有申明。