このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

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();

関連情報