我试图根据条件将一些参数传递给函数。
参数是对象。
所以基本上我试图用布尔语来做这件事。如果它是真的添加参数,如果它不添加任何内容。
theFunction(arg1, addArg2 && arg2, addArg3 && arg3);
这不起作用。 什么是实现这一目标的方法? 也许我应该首先建立清单,但我不知道该怎么做。
编辑---
我正在使用一个可以根据需要获取尽可能多的参数的库 论点如下:
const style1 = props => ({
borderRadius: "0%",
});
const style2 = props => ({
width: "10px",
});
theFunction(style1, style2);
我想根据值将这些传递给函数。对我来说,似乎用布尔值来做这个是一个很好的解决方案。 所以有时我会打电话给
theFunction(style1);
有时候
theFunction(style1, style2);
我愿意接受其他建议。
答案 0 :(得分:0)
您的库函数可能无法理解传递false
而不是对象作为参数的含义。不幸的是,没有什么'您可以传递给一个函数,以防止它出现在该函数的参数列表中。
但是,您可以根据需要构建可迭代的参数列表,并使用spread operator将其传递给库函数。
示例,假设f
是您的库函数:
function f(...args) {
console.log('Got', args);
}
var addArg2 = false, addArg3 = true;
var arg1 = 1, arg2 = 2, arg3 = 3;
// Not working:
f(arg1, addArg2 && arg2, addArg3 && arg3);
// Working:
var args = [arg1];
if (addArg2) args.push(arg2);
if (addArg3) args.push(arg3);
f(...args);

答案 1 :(得分:0)
我想我明白你要做的事情。
// You can use the spread operator in the declaration to make 'arguments' an array
function theFunction(...args) {
let obj = {};
args.forEach( (item) => {
// Using Object.entries() loop for the sake of legibility
for( let [key, value] of Object.entries(item)) {
// For every object you pass in, assign to object to return
obj[key] = value;
}
}
return obj;
}
当然,如果您只是将所有这些对象合并在一起,则可以使用Object.assign
function theFunction(...args) {
let obj = {};
args.forEach( (item) => {
Object.assign(obj, item);
}
return obj;
}
祝你好运!希望这会有所帮助。
答案 2 :(得分:-1)
U可以将默认值设置为null或者像在
之类的函数中一样var a = arg || null;