当第一个属性为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?
答案 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
。