这个b为什么是undefined
const {a, b:{c}} = obj;
console.log(a,b,c);
###
解构赋值声明语句确实容易混,我之前一直记不住到底冒号前还是冒号后是声明部分。
有冒号的情况,冒号后才是声明部分。
如果记得“解构也可以设置默认值的”,就很容易记忆。
let { a: b = 1 } = obj
b才是声明的变量,从obj中读a赋值给b,读不到则b取默认值1.
###这里的b仅作为解构标识,并没有在上下文中定义,你读到的b不是你理解看到的b
const b = 1;
const {a, b: {c}} = obj;
console.log(a, b, c); // b = 1
你要这样写
const {a, b} = obj;
const {c} = b;
console.log(a, b, c);
才能读到b
###看下babel的转化ES6转ES5就知道了
因为你根本就没声明b