首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当第一个属性为null或未使用ES6对象析构进行定义时,如何缺省为另一个属性

当第一个属性为null或未使用ES6对象析构进行定义时,如何缺省为另一个属性
EN

Stack Overflow用户
提问于 2018-01-04 05:50:20
回答 2查看 48关注 0票数 0

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

ES5等效项:

代码语言:javascript
复制
var obj = { a: null, b: 2 };
var num = obj.a || obj.b; // num = 2

使用ES6 (类似于):

代码语言:javascript
复制
const { num: a || b } = obj; // <- how to achieve the above effect here?
EN

回答 2

Stack Overflow用户

发布于 2018-01-04 05:55:08

代码语言:javascript
复制
 const { a: num = obj.b } = obj;

(这只适用于undefined,不适用于null)

代码语言:javascript
复制
const num = (({a, b}) => a || b)(obj)
票数 0
EN

Stack Overflow用户

发布于 2018-01-04 06:34:59

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

代码语言:javascript
复制
var obj = { a: undefined, b: 2}

你可以使用可怕的黑客

代码语言:javascript
复制
var { b: num, a: num = num } = obj;

或者它的可读性更强的变体

代码语言:javascript
复制
const { b, a: num = b } = obj;

然而,这在作用域中引入了额外的标识符b

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48085632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档