Сообщение

TypeError: "x" is not a function

Тип ошибки

TypeError.

Что пошло не так?

Была сделана попытка вызвать значение как функцию, но оно на самом деле не является функцией. Некоторый код ожидает, что вы предоставите функцию, но этого не происходит.

Возможно, есть ошибка в имени функции? Возможно, объект, метод которого вы вызываете, не содержит в себе этой функции? Для примера, JavaScript объекты не имеют map функции, а JavaScript Array - имеют.

Есть множество функций нуждающихся в функциях обратного вызова. Вы должны будете предоставить функцию обратного вызова для того, чтобы эти методы работы правильно:

Примеры

Ошибки в имени функции

В данном случае, случающемся очень часто, есть опечатка в имени метода:

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 ]

Смотри так же

Метки документа и участники

Внесли вклад в эту страницу: elscept, winvano, vladyslavnes, MonX94, eedmast, s1lver
Обновлялась последний раз: elscept,