// 1.定义时解构赋值
var x = 1;
var y = 2;
var z = 3;
let [a,b,c] = [4,5,6];
console.log("a = " + a);
console.log("b = " + b);
console.log("c = " + c);
// 2.后期解构赋值
[x,y,z] = [10,20,30];
console.log("x = " + x);
console.log("y = " + y);
console.log("z = " + z);
// 3.嵌套解构赋值
let [age,[salary,[name]]] = [20,[3000,["Bill"]]];
console.log("age = " + age);
console.log("salary = " + salary);
console.log("name = " + name);
// 4.没有对应的匹配值,会怎样
let [m,n] = ['a'];
console.log("m = " + m);
console.log("n = " + n);//undefined未定义
// 5.部分匹配
let [v1,v2] = [1,2,3,4,5];
console.log("v1="+v1);//1
console.log("v2="+v2);//2
// 6.匹配剩余的值
let [value1,value2,...others] = [0,1,2,3,4,5,6,7,8,9];
console.log("value1 = " + value1);//0
console.log("value2 = " + value2);//1
console.log("others.length = " + others.length);//8
console.log("others = " + others);//2,3,4,5,6,7,8,9
// 7.匹配不成功会怎样
try
{
let [t1] = 20;
}
catch(e)
{
console.log("let[t1] = 20:" + e);
}
// 8.Generator函数的解构赋值
// 只要某种数据结构具有Iterator接口,都可以采用数据形式的解构赋值
// 每执行一次,都会指向yield语句
// Generator函数,天生具有Iterator接口
// Generator每调用一次,会暂停
function* gen(x)
{
while(true)
{
yield x;
x = x + 2;
}
}
let [g1,g2,g3] = gen(10);
console.log("g1 = " + g1);//10
console.log("g2 = " + g2);//12
console.log("g3 = " + g3);//14