次のプログラムは,オブジェクト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.s
のa
)がエラーが起きた場所より前で初期化されていない可能性を調べてください.