0

当第一个属性为空或使用 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?
4

2 回答 2

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

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

或者

const num = (({a, b}) => a || b)(obj)
于 2018-01-03T21:55:07.617 回答
0

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

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

你可以使用可怕的黑客

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

或其更具可读性的变体

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

然而,它在范围中引入了一个额外的标识符b

于 2018-01-03T22:34:59.020 回答