Эта статья нуждается в редакционном обзоре. Как вы можете помочь.
Сообщение
TypeError: "x" is not a function
Тип ошибки
Что пошло не так?
Была сделана попытка вызвать значение как функцию, но значение на самом деле не является функцией. Некоторый код ожидает от вас предоставить функцию, но этого не происходит.
Может быть есть ошибка в имени функции? Может быть объект, который вы вызываете методом, не содержится в функции? Для примера, JavaScript объекты не имеют map
функции, но JavaScript Array делают.
Есть множество функции нуждающихся в функциях обратного вызова. Вы должны будете обеспечить функцию для того, чтобы эти методы работы правильно :
- Когда работаете с
Array
илиTypedArray
объектами: - Когда работаете с
Map
иSet
объектами:
Примеры
Ошибки в имени функции
В данном случае, случающимся очень часто, есть опечатка в имени метода:
var x = document.getElementByID("foo"); // TypeError: document.getElementByID is not a function
Корректное имя функции будет getElementById
:
var x = document.getElementById("foo");
Функция вызывающая не верный объект
Для некоторых методов, вы должны предоставить функцию обратного вызова и она будет работать только на корректных объектах. В этом примере используется Array.prototype.map()
, в котором Array
будет работать только с объектами.
var obj = { a: 13, b: 37, c: 42 }; obj.map(function(num) { return num * 2; }); // TypeError: obj.map is not a function
Использование массива вместо:
var numbers = [1, 4, 9]; numbers.map(function(num) { return num * 2; }); // Array [ 2, 8, 18 ]