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还没有声明。因此报错*/
原文地址:https://www.cnblogs.com/LearnAndGet/p/6249612.html
时间: 2024-10-09 14:22:28