1. 程式人生 > >ECMA Script 6新特性之解構賦值

ECMA Script 6新特性之解構賦值

不完全 賦值語句 cti true 進行 null 必須 引用 cee

1.基本概念用法

1.1解構賦值:ES6允許按照一定模式,從數組和對象中提取值,對變量進行賦值。

var a = 1;
var b = 2;
var c = 3;
/*上述賦值語句用解構賦值為*/
var [a,b,c] = [1,2,3];

1.2上述的解構發生在等號左右模式相同的情況下,如果等號兩邊的模式不一致,解構可能會不成功;

/*當變量多於值個數或無值時,解構失敗*/
var [foo] = [];   
var [a,b] = [1];
/*當變量少於值個數,不完全解構*/
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 [foo] = 10;
let [foo] = true;
let [foo] = null;
let [foo] = {};

1.3解構賦值可指定默認值:

var [foo = true] = [];  //foo = true;
var [a,b = 2] = [1];    //a = 1;b = 2;

另需註意,指定默認值的數組成員必須是嚴格等於undefined,否則默認值不會生效;

/**/
var [x = 1] = [undefined]; //x =1 var [x = 1] = [null]; //x=null var [x ,y= 1]= [2]; //y = 1

如果默認值是一個表達式,那麽這個表達式是惰性求值的,即只有在用到的時候,才會求值;

function f() {
  console.log(‘aaa‘);
}

let [x = f()] = [1];
/*上述代碼中因為x能取到值,因此f()函數不會執行*/

默認值可以引用解構賦值的其他變量,但該變量必須已經聲明;

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] = []; // ReferenceError /*最後一個賦值,x用到默認值y時,y還沒有聲明。因此報錯*/

ECMA Script 6新特性之解構賦值