Please note, this is a STATIC archive of website developer.mozilla.org from 03 Nov 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

ReferenceError: "x" is not defined

この記事は編集レビューを必要としています。ぜひご協力ください

メッセージ

ReferenceError: "x" is not defined

エラータイプ

ReferenceError

何がうまくいかなかったのか?

どこかで定義されていない変数を参照しています。この変数は、定義されている必要があります。または、現在のスクリプトか scope で利用可能か確認する必要があります。

ノート: (jQuery のような)ライブラリをロードしているときは、"$" のようなライブラリ変数にアクセスする前に、ロードされていることを確認する必要があります。コード内で使用する前に、ライブラリをロードする <script> タグを置いてください。

変数が宣言されていない

foo.substring(1); // ReferenceError: foo is not defined

"foo" 変数は定義されていません。String.prototype.substring() メソッドを動作させるためには、文字列である必要があります。

var foo = "bar";
foo.substring(1); // "ar"

スコープの誤り

変数は、現在の実行コンテキストで利用できる必要があります。関数の内側で定義された変数は、関数の外側からはアクセスできません。なぜなら、変数は関数のスコープでのみ定義されているからです。

function numbers () { 
  var num1 = 2, 
      num2 = 3;
  return num1 + num2;
}

console.log(num1); // ReferenceError num1 is not defined.

しかし、関数はそれが定義されているスコープ内で定義されているすべての変数と関数にアクセスできます。つまり、グローバルスコープで定義された関数は、グローバルスコープで定義されているすべての変数にアクセスできます。

var num1 = 2,
    num2 = 3;

function numbers () {
  return num1 + num2; 
}

console.log(num1); // 2

関連項目

ドキュメントのタグと貢献者

 このページの貢献者: YuichiNukiyama
 最終更新者: YuichiNukiyama,