JavaScript
TypeError: xxx is not a function
関数でないものを呼び出している
こんな症状
コンソールに TypeError: xxx is not a function と表示される。関数でないものを呼び出そうとしたときに起きるよ。
まず試す
エラーの名前が関数として定義されているか、console.log(typeof xxx) が function になるか確認する。
js
// ❌ 数値を呼び出し
const x = 5;
x();
// ✅ 関数として定義
const x2 = () => 5;
x2();これで直らなければ、下の「自分のケース」を確認。
🔍 自分のケースはどれ?
- ✓変数名と関数名が同じ
→ 名前の衝突を解消する(変数が関数を上書きしている)。 - ✓メソッド名のタイポ
→ 正しいメソッド名にする(例: tostring → toString)。 - ✓関数の定義/読み込みを忘れた
→ その関数が定義・import されているか確認する。
なぜ起きる?
関数ではないもの(数値、文字列、undefined等)に()を付けて呼び出そうとしているよ。変数名と関数名が同じになっている、関数の定義を忘れている、オブジェクトのメソッド名を間違えている、などが原因だよ。
✕ エラーが起きるコード
const x = 5;
x();
// number は関数ではない✓ 直したコード
const x = () => 5;
x(); // 5✅ 直ったか確認
呼び出しが TypeError なく実行され、関数の結果が返ればOK。
この解決法は役立ちましたか?
🔗 関連するエラー
- Uncaught TypeError: x.forEach is not a function — forEachできない値に対してforEachしている
- Uncaught ReferenceError: xxx is not defined — 変数・関数名のタイポ
- TypeError: undefined is not an object (evaluating 'obj.name') — 存在しないオブジェクトのプロパティにアクセスしている
- Uncaught TypeError: Cannot read properties of null (reading 'addEventListener') — 取得しようとしたHTML要素が見つかっていない
- Uncaught TypeError: Cannot read properties of undefined (reading 'length') — undefinedに対して.lengthを読んでいる
🔗 別カテゴリの関連エラー
📖 この問題を学べるレッスン
✏️ 手を動かして練習
📝 関連ブログ記事
- プログラミングのエラーメッセージの読み方 — エラーの読み方を基礎から解説
- JavaScriptとは?初心者向けにわかりやすく解説 — 変数・関数・イベントの基本
- JavaScriptでボタンクリックを動かす方法 — ボタンクリック時の動作を解説