SyntaxError: redeclaration of formal parameter "x"
JavaScript 的「redeclaration of formal parameter」例外會在函式參數中出現了相同的變數名稱,且函式主體中又再次使用 let
賦值來重複宣告它時發生。
訊息
SyntaxError: Identifier "x" has already been declared(基於 V8) 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";
}