HTML: Markup language
CSS: Styling language
JavaScript: Scripting language
Web APIs: Programming interfaces
All web technology
Learn web development
Discover our tools
Get to know MDN better
This page was translated from English by the community. Learn more and join the MDN Web Docs community.
View in English Always switch to English
TypeError: "x" is not a function
TypeError.
TypeError
Была сделана попытка вызвать значение как функцию, но оно на самом деле не является функцией. Некоторый код ожидает, что вы предоставите функцию, но этого не происходит.
Возможно, есть ошибка в имени функции? Возможно, объект, метод которого вы вызываете, не содержит в себе этой функции? Для примера, JavaScript объекты не имеют map функции, а JavaScript Array - имеют.
map
Есть множество функций, нуждающихся в колбэк-функциях. Вы должны будете предоставить колбэк-функцию для того, чтобы эти методы работы правильно:
Когда работаете с Array или TypedArray объектами:
Array
TypedArray
Array.prototype.every()
Array.prototype.some()
Array.prototype.forEach()
Array.prototype.map()
Array.prototype.filter()
Array.prototype.reduce()
Array.prototype.reduceRight()
Array.prototype.find()
Когда работаете с Map и Set объектами:
Map
Set
Map.prototype.forEach()
Set.prototype.forEach()
В данном случае, случающемся очень часто, есть опечатка в имени метода:
var x = document.getElementByID("foo"); // TypeError: document.getElementByID is not a function
Корректное имя функции - getElementById:
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 ]