SyntaxError: redeclaration of formal parameter "x"
当同一个变量名作为函数参数出现,然后在函数体中再次使用 let
赋值重新声明时,就会出现 JavaScript 异常“重新声明正式参数”。
消息
SyntaxError: Identifier "x" has already been declared (V8-based) SyntaxError: redeclaration of formal parameter "x" (Firefox) SyntaxError: Cannot declare a let variable twice: 'x'. (Safari)
错误类型
哪里出错了?
同一个变量名作为函数参数出现,然后在函数体中再次使用 let
赋值重新声明。在 JavaScript 中,不允许使用 let
在同一个函数或块作用域内重新声明同一个变量。
示例
重新声明的参数
在这种情况下,变量“arg”重新声明了参数。
js
function f(arg) {
let arg = "foo";
}
// SyntaxError: redeclaration of formal parameter "arg"
如果要更改函数体中“arg”的值,可以这样做,但不需要再次声明同一个变量。换句话说:可以省略 let
关键字。如果要创建一个新的变量,则需要重命名它,因为与函数参数已经冲突。
js
function f(arg) {
arg = "foo";
}
function g(arg) {
let bar = "foo";
}