SOURCE

/*
* 数组赋值 索引对应
*/
// let [a,b,c]=[1,2,3];
// console.log(a);
// console.log(b);
// console.log(c);

// let [foo,[[bar],baz]]=[1,[[2],3]];
// console.log(foo);
// console.log(bar);
// console.log(baz);

// let [ , , third] = ["foo", "bar", "baz"];
// console.log(third);

// let [head, ...tail] = [1, 2, 3, 4];
// console.log(head);
// console.log(tail);

// let [foo=true]=[];
// console.log(foo);

// function f() {
//   console.log('aaa');
// }
// let [x = f()] = [1];
// console.log(x);


/*
* 对象解构。
* 对象结构是根属性名称进行匹配,不依赖次序
*/
// let {foo,bar}={foo:'aaa',bar:'bbb'};
// console.log(foo);
// console.log(bar);

//let { baz } = { foo: 'aaa', bar: 'bbb' };
//console.log(baz);   //undefine

//对象的解构赋值,可以很方便地将现有对象的方法,赋值到某个变量。
//let { log, sin, cos } = Math;
//console.log(sin);

//let { log } = console;
//log('hello') // hello

//如果变量名与属性名不一致,必须写成下面这样
//let { foo: baz } = { foo: 'aaa', bar: 'bbb' };
//console.log(baz); // "aaa"

//对象的解构赋值的内部机制,是先找到同名属性,然后再赋给对应的变量。真正被赋值的是后者,而不是前者。
let { foo: baz } = { foo: 'aaa', bar: 'bbb' };
console.log(baz); // "aaa"
console.log(foo); // error: foo is not defined
console 命令行工具 X clear

                    
>
console