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/cant_delete/index.html | 59 ++++++++++ .../errors/deprecated_tolocaleformat/index.html | 93 ++++++++++++++++ .../uk/web/javascript/reference/errors/index.html | 31 ++++++ .../errors/invalid_for-in_initializer/index.html | 77 +++++++++++++ .../reference/errors/json_bad_parse/index.html | 112 +++++++++++++++++++ .../errors/more_arguments_needed/index.html | 46 ++++++++ .../errors/negative_repetition_count/index.html | 48 ++++++++ .../reference/errors/not_a_constructor/index.html | 91 +++++++++++++++ .../reference/errors/not_a_function/index.html | 124 +++++++++++++++++++++ .../errors/resulting_string_too_large/index.html | 53 +++++++++ 10 files changed, 734 insertions(+) create mode 100644 files/uk/web/javascript/reference/errors/cant_delete/index.html create mode 100644 files/uk/web/javascript/reference/errors/deprecated_tolocaleformat/index.html create mode 100644 files/uk/web/javascript/reference/errors/index.html create mode 100644 files/uk/web/javascript/reference/errors/invalid_for-in_initializer/index.html create mode 100644 files/uk/web/javascript/reference/errors/json_bad_parse/index.html create mode 100644 files/uk/web/javascript/reference/errors/more_arguments_needed/index.html create mode 100644 files/uk/web/javascript/reference/errors/negative_repetition_count/index.html create mode 100644 files/uk/web/javascript/reference/errors/not_a_constructor/index.html create mode 100644 files/uk/web/javascript/reference/errors/not_a_function/index.html create mode 100644 files/uk/web/javascript/reference/errors/resulting_string_too_large/index.html (limited to 'files/uk/web/javascript/reference/errors') diff --git a/files/uk/web/javascript/reference/errors/cant_delete/index.html b/files/uk/web/javascript/reference/errors/cant_delete/index.html new file mode 100644 index 0000000000..91369f763c --- /dev/null +++ b/files/uk/web/javascript/reference/errors/cant_delete/index.html @@ -0,0 +1,59 @@ +--- +title: 'TypeError: property "x" is non-configurable and can''t be deleted' +slug: Web/JavaScript/Reference/Errors/Cant_delete +tags: + - JavaScript + - TypeError + - Строгий режим + - помилка +translation_of: Web/JavaScript/Reference/Errors/Cant_delete +--- +
{{jsSidebar("Errors")}}
+ +

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

+ +
TypeError: Calling delete on 'x' is not allowed in strict mode (Edge)
+TypeError: property "x" is non-configurable and can't be deleted. (Firefox)
+TypeError: Cannot delete property 'x' of #<Object> (Chrome)
+
+ +

Тип помилки

+ +

{{jsxref("TypeError")}} тільки у строгому режимі.

+ +

Що сталось?

+ +

Була спроба видалити властивість, але ця властивість недоступна для налаштування. Атрибут configurable котролює, чи властивість об'єкта може бути видалена, та чи можна змінювати її атрибути (інші, крім writable).

+ +

Ця помилка виникає лише у строгому режимі. У нестрогому режимі оператор повертає false.

+ +

Приклади

+ +

Властивості, недоступні для налаштування, не є дуже поширеними, але їх можна створити за допомогою {{jsxref("Object.defineProperty()")}} або {{jsxref("Object.freeze()")}}.

+ +
'use strict';
+var obj = Object.freeze({name: 'Elsa', score: 157});
+delete obj.score;  // TypeError
+
+'use strict';
+var obj = {};
+Object.defineProperty(obj, 'foo', {value: 2, configurable: false});
+delete obj.foo;  // TypeError
+
+'use strict';
+var frozenArray = Object.freeze([0, 1, 2]);
+frozenArray.pop();  // TypeError
+
+ +

Існують також кілька недоступних для налаштування властивостей, вбудованих у JavaScript. Можливо, ви намагались видалити математичну константу.

+ +
'use strict';
+delete Math.PI;  // TypeError
+ +

Див. також

+ + diff --git a/files/uk/web/javascript/reference/errors/deprecated_tolocaleformat/index.html b/files/uk/web/javascript/reference/errors/deprecated_tolocaleformat/index.html new file mode 100644 index 0000000000..226aba7150 --- /dev/null +++ b/files/uk/web/javascript/reference/errors/deprecated_tolocaleformat/index.html @@ -0,0 +1,93 @@ +--- +title: 'Warning: Date.prototype.toLocaleFormat is deprecated' +slug: Web/JavaScript/Reference/Errors/Deprecated_toLocaleFormat +tags: + - Error + - JavaScript + - застереження +translation_of: Web/JavaScript/Reference/Errors/Deprecated_toLocaleFormat +--- +
{{jsSidebar("Errors")}}
+ +

Застереження JavaScript "Date.prototype.toLocaleFormat is deprecated; consider using Intl.DateTimeFormat instead" виникає, коли використовується нестандартний метод {{jsxref("Date.prototype.toLocaleFormat")}}.

+ +

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

+ +
Warning: Date.prototype.toLocaleFormat is deprecated; consider using Intl.DateTimeFormat instead
+
+ +

Тип помилки

+ +

Застереження. Виконання JavaScript не буде зупинене.

+ +

Що сталось?

+ +

Нестандартний метод {{jsxref("Date.prototype.toLocaleFormat")}} застарів та більше не рекомендований до використання. Він використовує рядок форматування в такому ж форматі, який очікується функцією strftime() у C. Функція більше недоступна у Firefox 58+.

+ +

Приклади

+ +

Застарілий синтаксис

+ +

Метод {{jsxref("Date.prototype.toLocaleFormat")}} застарів та буде прибраний (без кросбраузерної підтримки, доступний лише у Firefox).

+ +
var today = new Date();
+var date = today.toLocaleFormat('%A, %e. %B %Y');
+
+console.log(date);
+// У німецькій локалі
+// "Freitag, 10. März 2017"
+ +

Альтернативний стандартний синтаксис за допомогою ECMAScript Intl API

+ +

Стандарт ECMA-402 (ECMAScript Intl API) визначає стандартні об'єкти та методи, які вможливлюють чутливе до мови форматування дати та часу (доступні у Chrome 24+, Firefox 29+, IE11+, Safari10+).

+ +

Ви тепер можете або використати метод {{jsxref("Date.prototype.toLocaleDateString")}}, якщо ви бажаєте просто відформатувати одну дату.

+ +
var today = new Date();
+var options = { weekday: 'long', year: 'numeric',
+                month: 'long', day: 'numeric' };
+var date = today.toLocaleDateString('de-DE', options);
+
+console.log(date);
+// "Freitag, 10. März 2017"
+
+ +

Або ви можете скористатись об'єктом {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}}, який дозволяє кешувати об'єкт, в якому більшість обчислень вже зроблені, тому форматування відбувається швидко. Це корисно, якщо у вас є цикл дат для форматування.

+ +
var options = { weekday: 'long', year: 'numeric',
+                month: 'long', day: 'numeric' };
+var dateFormatter = new Intl.DateTimeFormat('de-DE', options)
+
+var dates = [Date.UTC(2012, 11, 20, 3, 0, 0),
+             Date.UTC(2014, 04, 12, 8, 0, 0)];
+
+dates.forEach(date => console.log(dateFormatter.format(date)));
+
+// "Donnerstag, 20. Dezember 2012"
+// "Montag, 12. Mai 2014"
+
+ +

Альтернативний стандартний синтаксис з використанням методів Date

+ +

Об'єкт {{jsxref("Date")}} пропонує декілька методів для створення налаштованого рядка дати.

+ +
(new Date()).toLocaleFormat("%Y%m%d");
+// "20170310"
+
+ +

Можна перетворити на:

+ +
let now = new Date();
+let date = now.getFullYear() * 10000 +
+          (now.getMonth() + 1) * 100 + now.getDate();
+
+console.log(date);
+// "20170310"
+ +

Див. також

+ + diff --git a/files/uk/web/javascript/reference/errors/index.html b/files/uk/web/javascript/reference/errors/index.html new file mode 100644 index 0000000000..c295fccea6 --- /dev/null +++ b/files/uk/web/javascript/reference/errors/index.html @@ -0,0 +1,31 @@ +--- +title: JavaScript error reference +slug: Web/JavaScript/Reference/Errors +tags: + - Debugging + - Error + - Errors + - Exception + - JavaScript + - NeedsTranslation + - TopicStub + - exceptions +translation_of: Web/JavaScript/Reference/Errors +--- +

{{jsSidebar("Errors")}}

+ +

Below, you'll find a list of errors which are thrown by JavaScript. These errors can be a helpful debugging aid, but the reported problem isn't always immediately clear. The pages below will provide additional details about these errors. Each error is an object based upon the {{jsxref("Error")}} object, and has a name and a message.

+ +

Errors displayed in the Web console may include a link to the corresponding page below to help you quickly comprehend the problem in your code.

+ +

List of errors

+ +

In this list, each page is listed by name (the type of error) and message (a more detailed human-readable error message). Together, these two properties provide a starting point toward understanding and resolving the error. For more information, follow the links below!

+ +

{{ListSubPages("/en-US/docs/Web/JavaScript/Reference/Errors")}}

+ +

See also

+ + diff --git a/files/uk/web/javascript/reference/errors/invalid_for-in_initializer/index.html b/files/uk/web/javascript/reference/errors/invalid_for-in_initializer/index.html new file mode 100644 index 0000000000..f856c96758 --- /dev/null +++ b/files/uk/web/javascript/reference/errors/invalid_for-in_initializer/index.html @@ -0,0 +1,77 @@ +--- +title: 'SyntaxError: for-in loop head declarations may not have initializers' +slug: Web/JavaScript/Reference/Errors/Invalid_for-in_initializer +tags: + - Error + - JavaScript + - SyntaxError + - Строгий режим + - помилка +translation_of: Web/JavaScript/Reference/Errors/Invalid_for-in_initializer +--- +
{{jsSidebar("Errors")}}
+ +

Виняток, що викидається лише у строгому режимі JavaScript, "for-in loop head declarations may not have initializers", виникає, коли шапка циклу for...in містить вираз ініціалізації, наприклад |for (var i = 0 in obj)|. Це не дозволено у циклах for-in у строгому режимі.

+ +

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

+ +
SyntaxError: for-in loop head declarations cannot have an initializer (Edge)
+SyntaxError: for-in loop head declarations may not have initializers (Firefox)
+SyntaxError: for-in loop variable declaration may not have an initializer. (Chrome)
+
+ +

Тип помилки

+ +

{{jsxref("SyntaxError")}} лише у строгому режимі.

+ +

Що сталось?

+ +

Шапка циклу for...in містить вираз ініціалізації. Тобто, було оголошено змінну та присвоєно їй значення |for (var i = 0 in obj)|. У нестрогому режимі таке оголошення просто ігнорується та сприймається як |for (var i in obj)|. Однак, у строгому режимі викидається помилка SyntaxError.

+ +

Приклади

+ +

Цей приклад викидає помилку SyntaxError:

+ +
"use strict";
+
+var obj = {a: 1, b: 2, c: 3 };
+
+for (var i = 0 in obj) {
+  console.log(obj[i]);
+}
+
+// SyntaxError: for-in loop head declarations may not have initializers
+
+ +

Правильний цикл for-in

+ +

Ви можете прибрати ініціалізатор (i = 0) з шапки циклу for-in.

+ +
"use strict";
+
+var obj = {a: 1, b: 2, c: 3 };
+
+for (var i in obj) {
+  console.log(obj[i]);
+}
+
+ +

Перебір масиву

+ +

Цикл for...in не варто використовувати для перебору масиву. Чи намагались ви використати цикл for замість for-in для перебору {{jsxref("Array", "масиву")}}? Цикл for також дозволяє використання ініціалізатора:

+ +
var arr = [ "a", "b", "c" ]
+
+for (var i = 2; i < arr.length; i++) {
+  console.log(arr[i]);
+}
+
+// "c"
+ +

Див. також

+ + diff --git a/files/uk/web/javascript/reference/errors/json_bad_parse/index.html b/files/uk/web/javascript/reference/errors/json_bad_parse/index.html new file mode 100644 index 0000000000..a4f20078c6 --- /dev/null +++ b/files/uk/web/javascript/reference/errors/json_bad_parse/index.html @@ -0,0 +1,112 @@ +--- +title: 'SyntaxError: JSON.parse: bad parsing' +slug: Web/JavaScript/Reference/Errors/JSON_bad_parse +tags: + - JSON + - JavaScript + - Method + - Property + - SyntaxError + - Помилки +translation_of: Web/JavaScript/Reference/Errors/JSON_bad_parse +--- +
{{jsSidebar("Errors")}}
+ +

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

+ +
SyntaxError: JSON.parse: unterminated string literal
+SyntaxError: JSON.parse: bad control character in string literal
+SyntaxError: JSON.parse: bad character in string literal
+SyntaxError: JSON.parse: bad Unicode escape
+SyntaxError: JSON.parse: bad escape character
+SyntaxError: JSON.parse: unterminated string
+SyntaxError: JSON.parse: no number after minus sign
+SyntaxError: JSON.parse: unexpected non-digit
+SyntaxError: JSON.parse: missing digits after decimal point
+SyntaxError: JSON.parse: unterminated fractional number
+SyntaxError: JSON.parse: missing digits after exponent indicator
+SyntaxError: JSON.parse: missing digits after exponent sign
+SyntaxError: JSON.parse: exponent part is missing a number
+SyntaxError: JSON.parse: unexpected end of data
+SyntaxError: JSON.parse: unexpected keyword
+SyntaxError: JSON.parse: unexpected character
+SyntaxError: JSON.parse: end of data while reading object contents
+SyntaxError: JSON.parse: expected property name or '}'
+SyntaxError: JSON.parse: end of data when ',' or ']' was expected
+SyntaxError: JSON.parse: expected ',' or ']' after array element
+SyntaxError: JSON.parse: end of data when property name was expected
+SyntaxError: JSON.parse: expected double-quoted property name
+SyntaxError: JSON.parse: end of data after property name when ':' was expected
+SyntaxError: JSON.parse: expected ':' after property name in object
+SyntaxError: JSON.parse: end of data after property value in object
+SyntaxError: JSON.parse: expected ',' or '}' after property value in object
+SyntaxError: JSON.parse: expected ',' or '}' after property-value pair in object literal
+SyntaxError: JSON.parse: property names must be double-quoted strings
+SyntaxError: JSON.parse: expected property name or '}'
+SyntaxError: JSON.parse: unexpected character
+SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data
+
+ +

Тип помилки

+ +

{{jsxref("Global_Objects/SyntaxError", "SyntaxError")}}

+ +

Що трапилося?

+ +

Метод {{jsxref("JSON.parse()")}} здійснює розбір JSON в переданому рядку. Він викидає цю помилку, якщо рядок містить неправильний JSON (виявлено неналежний синтаксис).

+ +

Приклади

+ +

JSON.parse() не дозволяє використовувати прикінцеві коми

+ +

Обидва наведені рядки викидають SyntaxError:

+ +
JSON.parse('[1, 2, 3, 4,]');
+JSON.parse('{"foo": 1,}');
+// SyntaxError JSON.parse: unexpected character
+// at line 1 column 14 of the JSON data
+
+ +

Задля належного розбору JSON оминайте використання прикінцевих ком:

+ +
JSON.parse('[1, 2, 3, 4]');
+JSON.parse('{"foo": 1}');
+ +

Ім'я властивості має бути рядком в подвійних лапках

+ +

Не можна використовувати одинарні лапки, як-от 'foo':

+ +
JSON.parse("{'foo': 1}");
+// SyntaxError: JSON.parse: expected property name or '}'
+// at line 1 column 2 of the JSON data
+ +

Натомість має бути "foo":

+ +
JSON.parse('{"foo": 1}');
+ +

Провідні нулі та десяткові крапки

+ +

Не можна вказувати провідні нулі (як у числі 01) та розділові крапки без якнайменше одного десяткового знака:

+ +
JSON.parse('{"foo": 01}');
+// SyntaxError: JSON.parse: expected ',' or '}' after property value
+// in object at line 1 column 2 of the JSON data
+
+JSON.parse('{"foo": 1.}');
+// SyntaxError: JSON.parse: unterminated fractional number
+// at line 1 column 2 of the JSON data
+
+ +

Провідні нулі приберіть, а на місці відсутніх десяткових знаків (якщо жодного значущого немає) напишіть просто нуль:

+ +
JSON.parse('{"foo": 1}');
+JSON.parse('{"foo": 1.0}');
+
+ +

Див. також

+ + diff --git a/files/uk/web/javascript/reference/errors/more_arguments_needed/index.html b/files/uk/web/javascript/reference/errors/more_arguments_needed/index.html new file mode 100644 index 0000000000..c0ede70788 --- /dev/null +++ b/files/uk/web/javascript/reference/errors/more_arguments_needed/index.html @@ -0,0 +1,46 @@ +--- +title: 'TypeError: More arguments needed' +slug: Web/JavaScript/Reference/Errors/More_arguments_needed +translation_of: Web/JavaScript/Reference/Errors/More_arguments_needed +--- +
{{jsSidebar("Errors")}}
+ +

Помилка

+ +
TypeError: Object.create requires more than 0 arguments
+TypeError: Object.setPrototypeOf requires more than 1 argument
+TypeError: Object.defineProperties requires more than 0 arguments
+
+ +

Тип помилки

+ +

{{jsxref("TypeError")}}.

+ +

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

+ +

Для виконання функції потрібні аргументи функції. Справа в тому, що для виконання функції потрібні параметри, ви повинні вказати їх на початок визову функції, в дужках.

+ +

Приклади

+ +

Визов Object.create() функції потребує щонайменьше один! аргумент.

+ +

Визов Object.setPrototypeOf({}) методу(функції) потребує два! аргументи.

+ +
var obj = Object.create();
+// TypeError: Object.create requires more than 0 arguments
+
+var obj = Object.setPrototypeOf({});
+// TypeError: Object.setPrototypeOf requires more than 1 argument
+
+ +

Це можливо виправити вказавши аргументи функції під час визову, наприклад:

+ +
var obj = Object.create(null);
+
+var obj = Object.setPrototypeOf({}, null);
+ +

Дивись також

+ + diff --git a/files/uk/web/javascript/reference/errors/negative_repetition_count/index.html b/files/uk/web/javascript/reference/errors/negative_repetition_count/index.html new file mode 100644 index 0000000000..7d0dc1abfb --- /dev/null +++ b/files/uk/web/javascript/reference/errors/negative_repetition_count/index.html @@ -0,0 +1,48 @@ +--- +title: 'RangeError: repeat count must be non-negative' +slug: Web/JavaScript/Reference/Errors/Negative_repetition_count +tags: + - Error + - JavaScript + - RangeError + - String + - помилка + - рядок +translation_of: Web/JavaScript/Reference/Errors/Negative_repetition_count +--- +
{{jsSidebar("Errors")}}
+ +

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

+ +
RangeError: argument out of range
+RangeError: repeat count must be non-negative (Firefox)
+RangeError: Invalid count value (Chrome)
+
+ +

Тип помилки

+ +

{{jsxref("RangeError")}}

+ +

Що сталось?

+ +

Був викликаний метод {{jsxref("String.prototype.repeat()")}}. Він має параметр count, що вказує, скільки разів потрібно повторити рядок. Його значення має бути від 0 та менше за позитивну {{jsxref("Infinity","нескінченність")}}, та не може бути від'ємним числом. Діапазон дозволених значень можна описати так: [0, +∞).

+ +

Приклади

+ +

Помилкове використання

+ +
'абв'.repeat(-1); // RangeError 
+ +

Правильне використання

+ +
'абв'.repeat(0);    // ''
+'абв'.repeat(1);    // 'абв'
+'абв'.repeat(2);    // 'абвабв'
+'абв'.repeat(3.5);  // 'абвабвабв' (count буде перетворений на ціле число)
+
+ +

Див. також

+ + diff --git a/files/uk/web/javascript/reference/errors/not_a_constructor/index.html b/files/uk/web/javascript/reference/errors/not_a_constructor/index.html new file mode 100644 index 0000000000..cf4e4a383a --- /dev/null +++ b/files/uk/web/javascript/reference/errors/not_a_constructor/index.html @@ -0,0 +1,91 @@ +--- +title: 'TypeError: "x" is not a constructor' +slug: Web/JavaScript/Reference/Errors/Not_a_constructor +translation_of: Web/JavaScript/Reference/Errors/Not_a_constructor +--- +
{{jsSidebar("Errors")}}
+ +

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

+ +
TypeError: "x" is not a constructor
+
+TypeError: Math is not a constructor
+TypeError: JSON is not a constructor
+TypeError: Symbol is not a constructor
+TypeError: Reflect is not a constructor
+TypeError: Intl is not a constructor
+TypeError: SIMD is not a constructor
+TypeError: Atomics is not a constructor
+
+ +

Тип помилки

+ +

{{jsxref("TypeError")}}

+ +

В чому справа?

+ +

Була спроба використати об'єкт чи змінну як конструктор, але сам об'єкт чи змінна не є конструктором. Дивись {{Glossary("constructor")}} чи new operator для більш детальної інформації.

+ +

У JavaScript існує багато глобальних об'єктів, наприклад {{jsxref("String")}} чи {{jsxref("Array")}}, які можуть створюватись конструкторами використовуючи синтаксис new. Однак, деякі глобальні об'єкти не можуть, їх властивості і методи статичні. Наступні об'єкти являються стандартом JavaScript, вони вбудовані і не мають конструкторів: {{jsxref("Math")}}, {{jsxref("JSON")}}, {{jsxref("Symbol")}}, {{jsxref("Reflect")}}, {{jsxref("Intl")}}, {{jsxref("SIMD")}}, {{jsxref("Atomics")}}.

+ +

Генератори функцій не можуть використовуватись також.

+ +

Приклади

+ +

Помилкові випадки

+ +
var Car = 1;
+new Car();
+// TypeError: Car не має конструктора
+
+new Math();
+// TypeError: Math не є конструктором
+
+new Symbol();
+// TypeError: Symbol не є конструктором
+
+function* f() {};
+var obj = new f;
+// TypeError: f не є конструктором
+
+ +

Конструктор Car

+ +

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

+ +
function Car(make, model, year) {
+  this.make = make;
+  this.model = model;
+  this.year = year;
+}
+
+ +

Тепер ви можете створювати об'єкти классу Car, наприклад mycar:

+ +
var mycar = new Car('Eagle', 'Talon TSi', 1993);
+ +

Обіцянка

+ +

Спроба повернути з функції екземляр класу, з виконанням його методу, під час виконання якоїсь функції(з ходу), вам не потрібно використовувати синтаксис типу new Promise(...).

+ +

Це є помилкою(виклик конктруктору класу Promise поза синтаксисом), виконання коду буде зупинено з помилкою TypeError: this is not a constructor вийняток:

+ +
return new Promise.resolve(true);
+
+ +

Замість цього використовуй статичні методи  класу Promise.resolve() чи Promise.reject() static methods:

+ +
// Це допустимо, але дуже нечитабельний синтаксис:
+return new Promise((resolve, reject) => { resolve(true); })
+
+// Замість цього, просто використовуйте статичні методи класу Promise:
+return Promise.resolve(true);
+return Promise.reject(false);
+
+ +

Дивись також

+ + 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' }
+
+ +

Дивись також

+ + diff --git a/files/uk/web/javascript/reference/errors/resulting_string_too_large/index.html b/files/uk/web/javascript/reference/errors/resulting_string_too_large/index.html new file mode 100644 index 0000000000..3ece6370b3 --- /dev/null +++ b/files/uk/web/javascript/reference/errors/resulting_string_too_large/index.html @@ -0,0 +1,53 @@ +--- +title: 'RangeError: repeat count must be less than infinity' +slug: Web/JavaScript/Reference/Errors/Resulting_string_too_large +tags: + - Error + - JavaScript + - RangeError + - String + - помилка + - рядок +translation_of: Web/JavaScript/Reference/Errors/Resulting_string_too_large +--- +
{{jsSidebar("Errors")}}
+ +

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

+ +
RangeError: argument out of range (Edge)
+RangeError: repeat count must be less than infinity and not overflow maximum string size (Firefox)
+
+RangeError: Invalid count value (Chrome)
+
+ +

Тип помилки

+ +

{{jsxref("RangeError")}}

+ +

Що сталось?

+ +

Був викликаний метод {{jsxref("String.prototype.repeat()")}}. Він має параметр count, що вказує, скільки разів потрібно повторити рядок. Його значення має бути від 0 та менше за позитивну {{jsxref("Infinity","нескінченність")}}, та не може бути від'ємним числом. Діапазон дозволених значень можна описати так: [0, +∞).

+ +

Отриманий в результаті рядок також не може бути більшим за максимальний розмір рядка, який може відрізнятись між рушіями JavaScript. У Firefox (SpiderMonkey) максимальний розмір рядка дорівнює 228 -1 (0xFFFFFFF).

+ +

Приклади

+ +

Помилкове використання

+ +
'абв'.repeat(Infinity); // RangeError
+'а'.repeat(2**28);      // RangeError
+
+ +

Правильне використання

+ +
'абв'.repeat(0);    // ''
+'абв'.repeat(1);    // 'абв'
+'абв'.repeat(2);    // 'абвабв'
+'абв'.repeat(3.5);  // 'абвабвабв' (count буде перетворений на ціле число)
+
+ +

Див. також

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