【发布时间】:2017-08-23 02:08:09
【问题描述】:
我目前正在使用对象解构模式和ES6 Object Destructuring Default Parameters 的答案中描述的默认参数。
(function test({a = "foo", b = "bar"} = {}) {
console.log(a + " " + b);
})();
我希望能够访问对象参数,而无需将其分配给函数体中的变量并显式列出每个键。
(function test({a = "foo", b = "bar"} = {}) {
const options = {a, b};
console.log(options);
})();
我尝试命名对象参数,但该函数失去了将丢失的键解析为其默认值的能力。
(function test(options = {a = "foo", b = "bar"} = {}) {
console.log(options);
})();
解构为命名参数时似乎忽略了默认参数。
这是 ES6 规范的一部分吗?有没有一种方法可以在函数体中不添加额外代码来实现所需的行为?
编辑:我删除了一个没有为问题添加上下文的多余示例。
【问题讨论】:
-
默认参数用于解构变量。如果您想将它们保留为对象属性,则需要在正文中执行此操作 - 正如答案所解释的那样。
-
@estus 你有该信息的来源吗?这是一个关于 ES6 规范的技术问题,而不是一般的编程实践。
-
无来源,这是根据 ES6 解构的能力得出的结论。您尝试做的事情不能单独由函数签名处理,应该在函数体中完成。顺便说一句,第二次 sn-p 中的显式重组本身并不是一件坏事。它允许从对象中排除无效键。
-
你的第三个 sn-p 像
function test(options = ({a = "foo", b = "bar"} = {}))一样工作——这不是你想要的 -
@Bergi 这是有道理的。如果您将其发布为答案,我会选择它。
标签: javascript ecmascript-6 arguments destructuring default-arguments