この記事は編集レビューを必要としています。ぜひご協力ください。
メッセージ
TypeError: variable "x" redeclares argument (Firefox)
エラータイプ
strict モード でのみ、TypeError
の警告がでます。
何がうまくいかなかったのか?
関数のパラメータとして使用されたものと同じ変数名が、関数のボディ内で var
割り当てを使用して再宣言されています。これは命名が競合する可能性があるため、JavaScript が警告を発します。
このエラーは、strict モードのコード でのみ発生します。非 strict モードでは、再宣言は暗黙裡に無視されます。
例
無効なケース
このケースでは、変数 "arg" 引数を再宣言しています。
"use strict"; function f(arg) { var arg = "foo"; }
有効なケース
var
ステートメントを省略するだけで、この警告を修正できます。なぜなら、変数はすでに存在しているからです。そのほかの方法として、関数のパラメータか変数名をリネームすることもできます。
"use strict"; function f(arg) { arg = "foo"; }