SyntaxError: redeclaration of formal parameter "x"

この記事は編集レビューを必要としています。ぜひご協力ください

メッセージ

SyntaxError: redeclaration of formal parameter "x" (Firefox)
SyntaxError: Identifier "x" has already been declared (Chrome)

エラータイプ

SyntaxError

何がうまくいかなかったのか?

関数パラメーターと同名の変数があり、関数内で再度 let 割り当てを使用して再宣言しています。JavaScript では、同じ関数内やブロックスコープ内で let を使用して同じ変数を再宣言できません。

この場合、変数 "arg" は、引数を再宣言しています。

function f(arg) { 
  let arg = "foo"; 
}

// SyntaxError: redeclaration of formal parameter "arg"

関数内で "arg" の値を変更する場合、同じ変数名を再度宣言せずとも可能です。つまり、let キーワードを省略します。新しい変数を生成する場合、既存の関数パラメーターと競合するので、変数名をリネームする必要があります。

function f(arg) {
  arg = "foo";
}

function f(arg) { 
  let bar = "foo"; 
}

互換性の注記

  • Firefox 49 (Firefox 49 / Thunderbird 49 / SeaMonkey 2.46) 以前では、TypeError (バグ 1275240) がスローされます。

関連項目

ドキュメントのタグと貢献者

 このページの貢献者: YuichiNukiyama
 最終更新者: YuichiNukiyama,