对象的解构赋值:变量必须与属性同名,才能取到正确的值。
let { bar, foo } = { foo: 'aaa', bar: 'bbb' };
let { baz } = { foo: 'aaa', bar: 'bbb' };
foo // "aaa"
bar // "bbb"
如上代码;1由于bar在后面的对象中有所以把后面对象bar的值‘bbb’赋值给第一个对象
2.foo所对应的也能找到;
let { foo: bar } = { foo: 'aaa', bar: 'bbb' };
bar // "aaa"
let { first: f, last: f } = { first: 'hello', last: 'world' };
console.log(f)//Uncaught SyntaxError: Identifier 'f' has already been declared;
在如上:1:第一个bar是aaa是因为在后面一个对象中寻找到了foo的值‘aaa’并将他赋值给了bar;
2:为什么报错呢?是因为first和last的变量名重复了;
总结:其实我们可以将(:)前的一个当作条件去后面的对象中寻找如果没找到就 就是undefined
找到了就将其赋值给( :)后面的值,如果( :)后面没值就将其赋值给( :)前的那个
在有(:)的时候前面的是(条件)其后面的就是变量
在没(:)的时候前面那个既是条件也是变量;