ReferenceError: "x" is not defined
JavaScript の例外 "変数名 is not defined" は、どこかで参照している変数が存在しない場合に発生します。
エラーメッセージ
ReferenceError: "x" is not defined (V8 ベース & Firefox) ReferenceError: Can't find variable: x (Safari)
エラーの種類
ReferenceError
エラーの原因
どこかで存在しない変数を参照しています。この変数を宣言しておくか、現在のスクリプトまたはスコープで利用可能であることを確認する必要があります。
メモ:
ライブラリー (jQuery など) を読み込むとき、ライブラリーの変数、例えば "$" にアクセスする前に読み込みが行われるかを確認してください。ライブラリーを読み込む <script> 要素は、それを使用するコードよりも前に置いてください。
例
>宣言されていない変数
js
foo.substring(1); // ReferenceError: foo is not defined
"foo" と言う変数はどこにも宣言されていません。これは文字列である必要があり、それならば String.prototype.substring() メソッドが動作します。
js
const foo = "bar";
foo.substring(1); // "ar"
スコープの間違い
変数は現在の実行コンテキストで利用可能である必要があります。関数の中で定義された変数は、その関数のスコープ内でしか定義されていないので、関数の外のどこからもアクセスできません。
js
function numbers() {
const num1 = 2;
const num2 = 3;
return num1 + num2;
}
console.log(num1); // ReferenceError num1 is not defined.
しかし、関数はそれが定義されたスコープ内で定義されたすべての変数と関数にアクセスすることができます。言い換えれば、グローバルスコープで定義された関数は、グローバルスコープ内で定義されたすべての変数にアクセスすることができます。/p>
js
const num1 = 2;
const num2 = 3;
function numbers() {
return num1 + num2;
}
console.log(numbers()); // 5