From 218934fa2ed1c702a6d3923d2aa2cc6b43c48684 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:43:23 -0500 Subject: initial commit --- .../reference/errors/not_a_function/index.html | 124 +++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 files/uk/web/javascript/reference/errors/not_a_function/index.html (limited to 'files/uk/web/javascript/reference/errors/not_a_function') diff --git a/files/uk/web/javascript/reference/errors/not_a_function/index.html b/files/uk/web/javascript/reference/errors/not_a_function/index.html new file mode 100644 index 0000000000..6130a8bef2 --- /dev/null +++ b/files/uk/web/javascript/reference/errors/not_a_function/index.html @@ -0,0 +1,124 @@ +--- +title: 'TypeError: "x" не є функцією' +slug: Web/JavaScript/Reference/Errors/Not_a_function +tags: + - JavaScript + - TypeError + - Помилки +translation_of: Web/JavaScript/Reference/Errors/Not_a_function +--- +
{{jsSidebar("Errors")}}
+ +

Повідомлення

+ +
TypeError: "x" не є функцією
+
+ +

Тип помилки

+ +

{{jsxref("TypeError")}}.

+ +

Що пішло не так?

+ +

Була спроба викликати значення з функції, але значення насправді не є функцією. Деякий код очікує, що ви надішлете функцію, але це не відбулося.

+ +

Можило в назві функції є опечатка? Можливо метод, що викликаєтся на об'єкті не має цієї функції? Наприклад, об'єкти JavaScript не мають функції map , але об'єкт масиву JavaScript має.

+ +

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

+ + + +

Приклади

+ +

Помилка в назві фунції

+ +

В цьому випадку, що трапляється занадто часто, в назві методу є помилка:

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

Функція має назву, що співпадає з існуючою раніш властивістю

+ +

Іноді під час створення класу ви можете мати властивість та функцію з тим самим ім'ям. Після виклику функції компілятор вважає, що функція перестає існувати.

+ +
var Dog = function () {
+ this.age = 11;
+ this.color = "black";
+ this.name = "Ralph";
+ return this;
+}
+
+Dog.prototype.name = function(name) {
+ this.name = name;
+ return this;
+}
+
+
+var myNewDog = new Dog();
+myNewDog.name("Cassidy"); //Uncaught TypeError: myNewDog.name is not a function
+
+ +

Використовуйте інше ім'я властивості:

+ +
var Dog = function () {
+ this.age = 11;
+ this.color = "black";
+ this.dogName = "Ralph"; //Using this.dogName instead of .name
+ return this;
+}
+
+Dog.prototype.name = function(name) {
+ this.dogName = name;
+ return this;
+}
+
+
+var myNewDog = new Dog();
+myNewDog.name("Cassidy"); //Dog { age: 11, color: 'black', dogName: 'Cassidy' }
+
+ +

Дивись також

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