JavaScript 函数 - 跳过可选参数时出现命名参数问题
JavaScript function - named parameters issue when skipping an optional parameter
如果您 运行 在浏览器的控制台中输入以下代码:
function named_param(a, b=null, c=5) {
console.log("a="+a);
console.log("b="+b);
console.log("c="+c);
}
named_param(3, c=10)
收到的输出是:
a=3
b=10
c=5
我正在寻找的输出是:
a=3
b=null
c=10
我看到了以下两个 URL 并尝试了一些解决方法,但没有奏效
Javascript Function Parameters Not Working
Named parameters in javascript
让我知道我在这里做错的步骤。尝试了以下代码但没有用:
答:
function named_param(a, {b=null, c=5}) {
console.log("a="+a);
console.log("b="+b);
console.log("c="+c);
}
named_param(3, c=10)
乙:
function named_param(a, {b=null, c=5}={}) {
console.log("a="+a);
console.log("b="+b);
console.log("c="+c);
}
named_param(3, c=10)
你可以跳过中间的参数,所以当你传递
named_param(3, c=10)
| |_____________ considered as `b`
|_________________ considered as `a`
你可以使用对象和解构
function named({a,b=null,c=3} = {}){
console.log('a-->',a)
console.log('b-->',b)
console.log('c-->',c)
}
named({a:1,c:2})
named()
named({c:2})
使用解构方案时,必须传递一个实际的对象。 named_param(3, c=10)
只是无效语法(好吧,它是有效的,但它是对作为第二个参数传递的全局 c
变量的赋值 - 无命名)。
function named_param(a, {b=null, c=5}={}) {
console.log("a="+a);
console.log("b="+b);
console.log("c="+c);
}
named_param(3)
named_param(3, {b:"hi"})
named_param(3, {c:10})
named_param(3, {b:"hi", c:10})
你可以做的是使用像这样的解构对象:
function named_params({a = 4, b = null, c = 5} = {a:1, b: 2, c:3}) { console.log(a,b,c) }
那么,您的函数的调用将是:
named_params({a: 3, c:10})
好吧,这不是问题,只是您试图在根本不支持的地方使用命名参数。
要达到您的需要,您应该这样做:
function named_param({a, b, c}) {
console.log("a="+a);
console.log("b="+b);
console.log("c="+c);
}
named_param({a:5, c:9});
// Output:
// a=5
// b=undefined
// c=9
起初我误解了你的问题,并建议对 arguments
对象使用解构赋值。
如果您 运行 在浏览器的控制台中输入以下代码:
function named_param(a, b=null, c=5) {
console.log("a="+a);
console.log("b="+b);
console.log("c="+c);
}
named_param(3, c=10)
收到的输出是:
a=3
b=10
c=5
我正在寻找的输出是:
a=3
b=null
c=10
我看到了以下两个 URL 并尝试了一些解决方法,但没有奏效
Javascript Function Parameters Not Working
Named parameters in javascript
让我知道我在这里做错的步骤。尝试了以下代码但没有用: 答:
function named_param(a, {b=null, c=5}) {
console.log("a="+a);
console.log("b="+b);
console.log("c="+c);
}
named_param(3, c=10)
乙:
function named_param(a, {b=null, c=5}={}) {
console.log("a="+a);
console.log("b="+b);
console.log("c="+c);
}
named_param(3, c=10)
你可以跳过中间的参数,所以当你传递
named_param(3, c=10)
| |_____________ considered as `b`
|_________________ considered as `a`
你可以使用对象和解构
function named({a,b=null,c=3} = {}){
console.log('a-->',a)
console.log('b-->',b)
console.log('c-->',c)
}
named({a:1,c:2})
named()
named({c:2})
使用解构方案时,必须传递一个实际的对象。 named_param(3, c=10)
只是无效语法(好吧,它是有效的,但它是对作为第二个参数传递的全局 c
变量的赋值 - 无命名)。
function named_param(a, {b=null, c=5}={}) {
console.log("a="+a);
console.log("b="+b);
console.log("c="+c);
}
named_param(3)
named_param(3, {b:"hi"})
named_param(3, {c:10})
named_param(3, {b:"hi", c:10})
你可以做的是使用像这样的解构对象:
function named_params({a = 4, b = null, c = 5} = {a:1, b: 2, c:3}) { console.log(a,b,c) }
那么,您的函数的调用将是:
named_params({a: 3, c:10})
好吧,这不是问题,只是您试图在根本不支持的地方使用命名参数。
要达到您的需要,您应该这样做:
function named_param({a, b, c}) {
console.log("a="+a);
console.log("b="+b);
console.log("c="+c);
}
named_param({a:5, c:9});
// Output:
// a=5
// b=undefined
// c=9
起初我误解了你的问题,并建议对 arguments
对象使用解构赋值。