【发布时间】:2017-04-16 22:41:05
【问题描述】:
主要是关于对象解构的 es6/7 问题。
假设我有这个示例函数:
const sample = (var1, var2) => {
const obj = {
one: var1
};
if (var2) {
obj.two = var2;
}
return obj;
};
这是一种说法,“第一个参数是预期的,如果定义了第二个参数,也将它添加到对象中”。
有没有更优雅的方法来实现相同的效果,但使用对象解构?
【问题讨论】:
-
我能想到的最接近的是:
const sample = (one, two) => ({one, two});那仍将定义two属性,但值将是undefined。 -
是的,我也遇到过。在很多情况下它会起作用,但有时只是属性的存在可能是一个问题。
-
那我就写成
const sample = (one, two) => two? {one, two}: {one}; -
@Thomas 我想就是这样。您为什么不将该评论添加为答案,以便我接受?谢谢!
-
如果您希望
two回退到某个默认值是可能的,就像这里显示的 stackoverflow.com/a/43431245/3731501 一样。否则,不,你需要if (var2 !== undefined) ...(if (var2)不起作用)。
标签: javascript ecmascript-6 destructuring