默认参数和对象有问题



我在Javascript中遇到了默认参数的问题。 我有一个这样的函数:

function search(filterOptions = {
foo: 'bar',
foo2: 'bar2'
}) {
...
}

当我调用不带参数的search()时,filterOptions设置为{foo: 'bar', foo2: 'bar'}, 但是当我打电话给search({ foo: 'something' })时,foo2是不确定的。

我不能将filterOptions分成几个参数,因为选项是独立的。

如何使foo2无论如何(干净地(采用其默认值?

(我在节点js上(

谢谢!

您可以在函数中定义默认值,并使用 spread 语法组合两个对象,这将在适用的情况下覆盖默认值。

function search(filterOptions) {
const defaults = { foo: 'foo', foo2: 'bar' };
filterOptions = {...defaults,...filterOptions};
console.log(filterOptions);
}
search({foo: 'something'});

您可以在参数列表中提供默认值:

function search({ foo = "bar", foo2 = "bar2"} = {}) {
console.log("foo is " + foo + ", foo2 is " + foo2);
}
console.log(search());
console.log(search({ foo: "broccoli" }));
console.log(search({ foo: "my foo", foo2: "my foo2" }));

最后= {}处理在没有参数的情况下调用函数的情况。

您可以使用if语句定义默认变量:

function search(arr) {
if(arr.bar === undefined) {
arr.bar = "bar1";
}
//do whatever
}

使用===是为了确保在 bar 设置为"undefined"(字符串(时if不会运行。

最新更新