说我有一个带有三个参数的函数,其中两个具有默认值:
function f(a, b=2, c=3){
console.log(a, b, c)
}
如果我对b
的值完全满意,是否可以调用f
并直接为c
指定一个值?< / p>
在Python中,我会做类似f(1, c=5)
的事情吗?
用例:如果我不知道b
的默认值,或者如果有更多的参数,那么不这样做将很麻烦
答案 0 :(得分:9)
是否可以调用
f
并直接为c
指定一个值?
不,JavaScript没有这种命名参数。
您可以通过提供f
来使用b
的默认呼叫undefined
:
f(1, undefined, 5);
function f(a, b = 2, c = 3){
console.log(a, b, c)
}
f(1, undefined, 5);
或者,您可以不同地定义f
:让它接受一个将其分解为参数的对象,然后用一个对象调用它:
function f({a, b = 2, c = 3}){
console.log(a, b, c)
}
f({a: 1, c: 5});
如果您希望在不使用任何对象的情况下调用它是有效的(上述情况是错误的),请提供默认的结构化参数:
function f({a, b = 2, c = 3} = {}){
// -------------------------^^^^^
console.log(a, b, c)
}
答案 1 :(得分:4)
您可以像这样传递带有命名键的对象:
function f({a, b=2, c=3}){
console.log(a, b, c)
}
f({b: 4})