gpt4 book ai didi

javascript - ES6 命名对象参数解构

转载 作者:行者123 更新时间:2023-11-29 10:06:00 24 4
gpt4 key购买 nike

我目前正在使用带有默认参数的对象解构模式,在对 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 规范的一部分吗?有没有一种方法可以在不在函数体中添加额外代码的情况下实现所需的行为?


编辑:我删除了一个没有为问题添加上下文的多余示例。

最佳答案

老实说,我认为你过于复杂了。默认参数不是强制性的——在这种情况下,没有它您的代码会更清晰。

我会简单地将对象 options 作为参数,并在分配默认值后在函数体内进行解构。

function test(options) {
options = Object.assign({a: 'foo', b: 'bar'}, options);
let {a, b} = options;
console.log(options, a, b);
}

test(); // foo bar
test({a: 'baz'}); // baz bar
test({b: 'fuz'}); // foo fuz
test({c: 'fiz'}); // foo bar


特别考虑到您的最终代码段:

(function test(options = {a: "foo", b: "bar"}) {
console.log(options);
})({a: "baz"});

问题是当传递的值为undefined 时使用默认参数。这里,传递的值是 {a: "baz"}。那不是 undefined,所以忽略默认参数。对象不会自动合并。

更广泛地回答您的问题:没有办法在方法的参数中同时获取对象和解构其某些属性。坦率地说,我很感激,因为函数签名乍一看可能很难阅读。

关于javascript - ES6 命名对象参数解构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43096016/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com