具有相同参数的Javascript函数声明

Mar*_*mon 11 javascript function function-declaration

我自己在学习javascript.我发现如果我声明一个具有相同参数的函数它只是工作正常:

function func(a, b, a){
  return b;
}
alert(func(1,2,3));
Run Code Online (Sandbox Code Playgroud)

但如果我这样做:

function func(a, b, a = 5){
  return b;
}
alert(func(1,2,3)); 
//Firebug error - SyntaxError: duplicate argument names not allowed in this context
Run Code Online (Sandbox Code Playgroud)

然后它不再工作了.它为第一个方程而不是第二个方程式的工作原理是什么?

Poi*_*nty 6

ES2015(该语言的最新稳定规范)允许使用默认值声明参数.执行此操作时,该语言将不允许您重复使用参数名称.

当您没有执行任何参数默认值时,该语言允许旧的"草率"重用参数名称.如果您启用"严格"模式解释,您的第一个示例也会出现错误.