最近看wqdhb的ES6发现了个地方有点不懂,理解之后,特意记录下来。
就是上面这块。
首先是外面这个括号,我们知道如果提前定义了一个变量,下面再来解构赋值就得加上括号而不是下面这样
然后是里面的东西,我们读前面的内容之后
const node = { loc: { start: { line: 1, column: 5 } }};let { loc, loc: { start }, loc: { start: { line }} } = node;line // 1loc // Object {start: Object}start // Object {line: 1, column: 5}我们发现,给对象解构赋值的时候, ’ : ’ 冒号表示这个对象是个模式,而不是变量,只有 ’ = '等号或者不加等号才表示变量赋值,比如
vps云服务器 let a; let b; ({a, b} = {a: 10, b: 12}) // ({a = 0, b} = {a: undefined, b: 12})所以
({ foo: obj.prop, bar: arr[0] } = { foo: 123, bar: true });这里面跟前面的例子一样,赋值是赋给 obj 的 prop 以及 arr 的第 0 项!
依照一一对应,所以 obj.prop 赋值 123, 而 arr[0] 赋值 true 就是这么来的。
wqdhb的es6地址:https://es6.ruanyifeng.com/#docs/destructuring
end