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)
错误类型
SyntaxError
哪里出错了?
同一个变量名既作为函数参数出现,又在函数体中使用 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";
}