TypeError: x is not a function
JavaScriptで関数ではないものを関数として呼び出した際のエラー
概要
JavaScriptで関数ではない値(undefined、オブジェクト、文字列など)を関数として呼び出そうとした際に発生するエラーです。
エラーメッセージ
TypeError: x is not a function
TypeError: undefined is not a function
TypeError: object.method is not a function
原因
- 変数名の重複: 関数と同名の変数を定義して上書きしてしまった
- メソッドの存在確認不足: オブジェクトに存在しないメソッドを呼び出した
- インポートの誤り: モジュールから正しくエクスポートされていない関数をインポートした
- thisのコンテキスト喪失: コールバックで
thisが変わり、メソッドが見つからない
解決策
1. 変数名の重複を確認
| |
2. メソッドの存在確認
| |
3. 正しいインポート
| |
4. thisのバインド
| |
5. 配列メソッドの確認
| |
よくある間違い
setTimeout(myFunc(), 1000)→setTimeout(myFunc, 1000)(括弧を付けると即時実行される)- IIFEの前にセミコロンを付け忘れる
- コールバック関数を渡す際に括弧を付けてしまう
関連エラー
参考リンク
JavaScript の他のエラー
この記事は役に立ちましたか?