「Uncaught TypeError: 変数名 is not a function」って何?

JavaScript ここがわからない

t f B! P L

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

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

「Uncaught TypeError: 変数名 is not a function」

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

「変数名」の部分には、変数名が表示されます。

「Uncaught TypeError」とは

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

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

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

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

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

「変数名 is not a function」とは

直訳:「変数名」は関数ではありません

超訳:「変数名」は関数じゃないので関数みたいには使えないよ!

関数【かん‐すう】
与えられた文字や数値に対し、定められた処理を行って結果を返す機能のこと。表計算ソフトやデータベースソフト、プログラミング言語などで利用される。
「ASCII.jpデジタル用語辞典」より

関数とは、何らかの処理を行うものです。
ティラノスクリプトのタグとかも、JavaScriptのいろんな関数を組み合わせて作られています。

JavaScriptの変数と関数は、書き方が非常によく似ているので、ちょっと書き間違えただけで「変数なのに関数として使おうとしている」ということが起きます。
そういう場合に、このエラーが出ます。

エラーを解決する

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

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

タグ一覧最初から表示

このブログを検索

連絡先

名前

メール *

メッセージ *

QooQ