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";
}