当第一个属性使用ES6对象解构时为null或未定义时,如何默认为另一个属性

时间:2018-01-03 21:50:20

标签: javascript ecmascript-6 object-destructuring

当第一个属性为null或使用ES6对象解构未定义时,寻找一种从对象访问第二个非null属性的简洁方法。

等同于ES5:

var obj = { a: null, b: 2 };
var num = obj.a || obj.b; // num = 2

使用ES6(类似):

const { num: a || b } = obj; // <- how to achieve the above effect here?

2 个答案:

答案 0 :(得分:0)

 const { a: num = obj.b } = obj;

(仅适用于undefined,而不适用于null

const num = (({a, b}) => a || b)(obj)

答案 1 :(得分:0)

解构中的默认值仅适用于undefined,而非null。与

var obj = { a: undefined, b: 2}

你可以使用可怕的黑客

var { b: num, a: num = num } = obj;

或其更具可读性的变体

const { b, a: num = b } = obj;
然而,

在范围内引入了额外的标识符b