我在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
不会运行。