--- title: 'TypeError: "x" is not a function' slug: Web/JavaScript/Reference/Errors/Not_a_function tags: - JavaScript - TypeError - Ошибки translation_of: Web/JavaScript/Reference/Errors/Not_a_function ---
TypeError: "x" is not a function
{{jsxref("TypeError")}}.
Была сделана попытка вызвать значение как функцию, но оно на самом деле не является функцией. Некоторый код ожидает, что вы предоставите функцию, но этого не происходит.
Возможно, есть ошибка в имени функции? Возможно, объект, метод которого вы вызываете, не содержит в себе этой функции? Для примера, JavaScript объекты не имеют map
функции, а JavaScript Array - имеют.
Есть множество функций, нуждающихся в колбэк-функциях. Вы должны будете предоставить колбэк-функцию для того, чтобы эти методы работы правильно:
В данном случае, случающемся очень часто, есть опечатка в имени метода:
var x = document.getElementByID("foo"); // TypeError: document.getElementByID is not a function
Корректное имя функции - getElementById
:
var x = document.getElementById("foo");
Для некоторых методов вы должны предоставить колбэк-функцию, и она будет работать только на корректных объектах. В этом примере используется {{jsxref("Array.prototype.map()")}}, в котором {{jsxref("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 ]