ReferenceError: assignment to undeclared variable "x"
JavaScript の厳格モード独自の例外 "Assignment to undeclared variable" は、値が宣言されていない変数に代入されたときに発生します。
エラーメッセージ
ReferenceError: x is not defined (V8-based) ReferenceError: assignment to undeclared variable x (Firefox) ReferenceError: Can't find variable: x (Safari)
エラー型
厳格モード でのみ、ReferenceError の警告が出ます。
エラーの原因
x = ... という形式の代入文がありますが、x は var、let、または const キーワードを使って事前に宣言されていません。
このエラーは、厳格モードのコードでのみ発生します。
厳格モード以外のコードでは、宣言されていない変数への代入を行うと、グローバルスコープ上に暗黙的にプロパティが生成されます。
例
>無効なケース
このケースでは、変数 "bar" は宣言していない変数です。
js
function foo() {
"use strict";
bar = true;
}
foo(); // ReferenceError: assignment to undeclared variable bar
有効な場合
"bar" を宣言済みの変数にするために、その前に let, const, var のいずれかのキーワードを追加します。
js
function foo() {
"use strict";
const bar = true;
}
foo();