当第一个属性为空或使用 ES6 对象解构未定义时,寻找一种从对象访问第二个非空属性的简洁方法。
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?
当第一个属性为空或使用 ES6 对象解构未定义时,寻找一种从对象访问第二个非空属性的简洁方法。
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?
const { a: num = obj.b } = obj;
(仅适用于undefined
,不适用于null
)
或者
const num = (({a, b}) => a || b)(obj)
解构中的默认值仅适用于undefined
,而不适用于null
。和
var obj = { a: undefined, b: 2}
你可以使用可怕的黑客
var { b: num, a: num = num } = obj;
或其更具可读性的变体
const { b, a: num = b } = obj;
然而,它在范围中引入了一个额外的标识符b
。