lzcdev / Daily-Front-End-Questions

每日前端面试题、技巧等知识点,记录自己的成长过程
MIT License
1 stars 0 forks source link

输出什么?(对象的解构) #14

Open lzcdev opened 5 years ago

lzcdev commented 5 years ago
let { foo: baz } = { foo: 'aaa', bar: 'bbb'}
console.log(baz);
console.log(foo);
lzcdev commented 5 years ago

输出: aaa ReferenceError: foo is not defined

对象的解构赋值是下面形式的简写:

let { foo: foo, bar: bar } = { foo: 'aaa', bar: 'bbb' };

可以简写成

let { foo, bar } = { foo: 'aaa', bar: 'bbb' };

也就是说,对象的解构赋值的内部机制,是先找到同名属性,然后再赋给对应的变量。真正被赋值的是后者,而不是前者。foo是匹配的模式,baz才是变量。真正被赋值的是变量baz,而不是模式foo。