「Uncaught TypeError: Cannot read property 変数名 of undefined」って何?

JavaScript ここがわからない

t f B! P L

開発者ツール(DevTools)を確認する

ティラノスタジオで「プレビュー」→「ゲーム再生」を選択し、「デバッグを表示する」にチェックを入れてゲームを再生してください。
ゲーム画面と一緒に、開発者ツールが表示されます。

「Uncaught TypeError: Cannot read property 変数名 of undefined」

だいたい上の画像のようにエラーが表示されます。
下の方はエラーがでた箇所によって変わりますが、一番上に「Uncaught TypeError: Cannot read property 変数名 of undefined」と表示されていたらこのエラーです。

「~token」のあとには、記号が表示されていることもあります。

「Uncaught TypeError」とは

直訳:補足されないタイプエラー

超訳:タイプが間違っています!

変数には「タイプ(型)」というものがあります。
「0」なら数値型、「"abc"」なら文字列型、「true」ならブール型、みたいな感じです。

JavaScriptは大雑把な言語なので、違う型の変数を同時に扱ったりしてもあんまりエラーは出ません。
が、無茶なことをしようとするとエラーが出ます。

無茶なことについては次の項で。

「Cannot read property 変数名 of undefined」とは

直訳:未定義の「変数名」のプロパティは読み取れません

超訳:「変数名」は未定義なのでプロパティは読み取れないよ!

「プロパティ」とは、オブジェクトが持っている要素のことです。
オブジェクトについてはこっちの記事で詳しく書いてるので読んでみてね
ティラノスクリプトでのJavaScript基本編

プロパティはオブジェクト型の変数しか設定できないものなんですが、読み取るだけなら数値型でも文字列型でもできます。エラーにはなりません。

ですが、「undefined」という型だけは別です。
「undefined」は「未定義」という意味です。
undefined型は特殊な型で、簡単に言うと「虚無」なので、プロパティを読み取ることすらできません。読み取ろうとすると、エラーになります。

今回はundefinedの変数のプロパティを読み取ろうとしてしまったので、エラーが出ているようです。

エラーを解決する

まずはエラーが出ている箇所を確認しましょう。

  1. ティラノスタジオの「プレビュー」→「コンソール」を選択します。
  2. エラーが出ている部分が灰色にハイライト表示されています。
    [iscript]~[endscript]内のJavaScriptにエラーがある場合、[endscirpt]の部分がハイライト表示されます。
  3. 次に、開発者ツールのConsoleタブを確認します。
    赤線部分の「:」の右側の数字が、[iscript]~[endscript]内での行番号です。
    この場合だと1行目です。
  4. 実際のスクリプトの1行目を見てみます。
    console.log()ので表示しようとしている変数を、「tf」と間違えて「rf」と書いていますね。書き直しましょう。
  5. エラーの原因がわかったら、書き直してゲーム再生してみましょう。

タグ一覧最初から表示

このブログを検索

連絡先

名前

メール *

メッセージ *

QooQ