问题: const b = {a:false} const {a = 2} = b 执行结果 a == false 既然Boolean(a) == false ,为何不取默认值2呢??? 答案: 可以进入babel自己测试下 可以看到es6 => es5之后的结果 a = b.a === void 0 ? false : b.a void 0的解释 void 0 === undefined // true 所以取默认值的条件就是 b.a === unndefined null ,false,0等等全部不符合