ECMA Script 6新特性之解構賦值
阿新 • • 發佈:2018-07-24
不完全 賦值語句 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 = 2let [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新特性之解構賦值