用途別リファレンス

Error: Cannot read property ??? of undefined などのエラーメッセージについて

正しく動くプログラム

次のプログラムは,オブジェクトaのフィールドsの値である10を表示します.

Main

//aにx=100,y=100,s=10の値を代入
a=new Chara{x:100,y:100,s:10};
//aの中に入っているsの値を画面に表示
print(a.s);

Chara

//中身は何も書かなくていいが、Charaのファイルは作る

エラーが発生するプログラム

次のプログラムは

Cannot read property 's' of undefined

というエラーが発生します.(このエラーメッセージは,ダウンロード版および,Chromeの場合です.ブラウザによりメッセージは異なります)

Main

//aの中に入っているsの値を画面に表示
print(a.s);
//aにx=100,y=100,s=10の値を代入
a=new Chara{x:100,y:100,s:10};

Chara

//中身は何も書かなくていいが、Charaのファイルは作る

しかし次の場合は、画面にundefinedと出力されます.

Main

//aに入っている値を画面に表示
print(a);
//aにx=100,y=100,s=100の値を代入
a=new Chara{x:100,y:100,s:10};

これらのことから,値が入ってない変数(ここではa)にはundefinedという値が入っていることがわかります.unefined自身は関数に渡したり,他の変数に代入したりできる値ですが,undefineの値に対して,a.sのようにフィールドへのアクセスを行なうとエラーが起きます.

このようなエラーが起きた場合、エラーメッセージで書かれている

Cannot read property 's' of undefined

's' に注目し,ソースコード中でその手前に書いてある変数(ここではa.sa)がエラーが起きた場所より前で初期化されていない可能性を調べてください.