--- title: 'SyntaxError: redeclaration of formal parameter "x"' slug: Web/JavaScript/Reference/Errors/Redeclared_parameter tags: - Error - Errors - JavaScript - SyntaxError translation_of: Web/JavaScript/Reference/Errors/Redeclared_parameter ---
JavaScript の例外 "redeclaration of formal parameter" は、関数の引数名としてある変数名が発生した後、関数本体内の {{jsxref("Statements/let", "let")}} 代入文を使用して同じ変数名を再度宣言すると発生します。
SyntaxError: Let/Const redeclaration (Edge) SyntaxError: redeclaration of formal parameter "x" (Firefox) SyntaxError: Identifier "x" has already been declared (Chrome)
{{jsxref("SyntaxError")}}
関数の引数と同名の変数があり、関数内で再度 {{jsxref("Statements/let", "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'; }