この記事は編集レビューを必要としています。ぜひご協力ください。
メッセージ
ReferenceError: "x" is not defined
エラータイプ
何がうまくいかなかったのか?
どこかで定義されていない変数を参照しています。この変数は、定義されている必要があります。または、現在のスクリプトか 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