From 074785cea106179cb3305637055ab0a009ca74f2 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:42:52 -0500 Subject: initial commit --- .../reference/errors/not_a_function/index.html | 84 ++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 files/ru/web/javascript/reference/errors/not_a_function/index.html (limited to 'files/ru/web/javascript/reference/errors/not_a_function') diff --git a/files/ru/web/javascript/reference/errors/not_a_function/index.html b/files/ru/web/javascript/reference/errors/not_a_function/index.html new file mode 100644 index 0000000000..400db48a69 --- /dev/null +++ b/files/ru/web/javascript/reference/errors/not_a_function/index.html @@ -0,0 +1,84 @@ +--- +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 +--- +
{{jsSidebar("Errors")}}
+ +

Сообщение

+ +
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 ]
+
+ +

Смотри также

+ + -- cgit v1.2.3-54-g00ecf