JavaScript函数-跳过可选参数时出现命名参数问题

JavaScript函数-跳过可选参数时出现命名参数问题,javascript,named-parameters,Javascript,Named Parameters,如果在浏览器控制台中运行以下代码: 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,并尝试了一些解决方法,但都不起作用 让我知道我在这里做错的步骤。尝试

如果在浏览器控制台中运行以下代码:

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,并尝试了一些解决方法,但都不起作用

让我知道我在这里做错的步骤。尝试了以下代码,但无效: A:

B:


您可以跳过中间的参数,所以当您通过

named_param(3, c=10)
            |   |_____________ considered as `b`
            |_________________ considered as `a`
可以使用对象和分解结构

名为({a,b=null,c=3}={})的函数{ console.log('a-->',a) console.log('b-->',b) console.log('c-->',c) } 命名({a:1,c:2}) 命名()
命名({c:2})使用解构解决方案时,必须传递实际对象
named_param(3,c=10)
只是无效语法(好吧,它是有效的,但它是作为第二个参数传递的全局
c
变量的赋值-无命名)


您可以使用以下对象进行分解:

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

起初我误解了你的问题,建议对
参数
对象使用解构赋值。

JavaScript没有命名参数。请尝试在严格模式下运行
named_param(3,c=10)
,您将得到一个异常。“Javascript函数参数不工作”问题与此无关。为
name_params()
vs
name_params({})
设置不同的默认值很奇怪
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