diff options
author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:43:23 -0500 |
---|---|---|
committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:43:23 -0500 |
commit | 218934fa2ed1c702a6d3923d2aa2cc6b43c48684 (patch) | |
tree | a9ef8ac1e1b8fe4207b6d64d3841bfb8990b6fd0 /files/uk/web/javascript/reference/errors | |
parent | 074785cea106179cb3305637055ab0a009ca74f2 (diff) | |
download | translated-content-218934fa2ed1c702a6d3923d2aa2cc6b43c48684.tar.gz translated-content-218934fa2ed1c702a6d3923d2aa2cc6b43c48684.tar.bz2 translated-content-218934fa2ed1c702a6d3923d2aa2cc6b43c48684.zip |
initial commit
Diffstat (limited to 'files/uk/web/javascript/reference/errors')
10 files changed, 734 insertions, 0 deletions
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 +--- +<div>{{jsSidebar("Errors")}}</div> + +<h2 id="Повідомлення">Повідомлення</h2> + +<pre class="syntaxbox">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) +</pre> + +<h2 id="Тип_помилки">Тип помилки</h2> + +<p>{{jsxref("TypeError")}} тільки у строгому режимі.</p> + +<h2 id="Що_сталось">Що сталось?</h2> + +<p>Була спроба видалити властивість, але ця властивість <a href="/uk/docs/Web/JavaScript/Data_structures#Properties">недоступна для налаштування</a>. Атрибут <code>configurable</code> котролює, чи властивість об'єкта може бути видалена, та чи можна змінювати її атрибути (інші, крім <code>writable</code>).</p> + +<p>Ця помилка виникає лише у <a href="/uk/docs/Web/JavaScript/Reference/Strict_mode">строгому режимі</a>. У нестрогому режимі оператор повертає <code>false</code>.</p> + +<h2 id="Приклади">Приклади</h2> + +<p>Властивості, недоступні для налаштування, не є дуже поширеними, але їх можна створити за допомогою {{jsxref("Object.defineProperty()")}} або {{jsxref("Object.freeze()")}}.</p> + +<pre class="brush: js example-bad">'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 +</pre> + +<p>Існують також кілька недоступних для налаштування властивостей, вбудованих у JavaScript. Можливо, ви намагались видалити математичну константу.</p> + +<pre class="brush: js example-bad">'use strict'; +delete Math.PI; // TypeError</pre> + +<h2 id="Див._також">Див. також</h2> + +<ul> + <li><a href="/uk/docs/Web/JavaScript/Reference/Operators/delete">Оператор delete</a></li> + <li>{{jsxref("Object.defineProperty()")}}</li> + <li>{{jsxref("Object.freeze()")}}</li> +</ul> 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 +--- +<div>{{jsSidebar("Errors")}}</div> + +<p>Застереження JavaScript "Date.prototype.toLocaleFormat is deprecated; consider using Intl.DateTimeFormat instead" виникає, коли використовується нестандартний метод {{jsxref("Date.prototype.toLocaleFormat")}}.</p> + +<h2 id="Повідомлення">Повідомлення</h2> + +<pre class="syntaxbox notranslate">Warning: Date.prototype.toLocaleFormat is deprecated; consider using Intl.DateTimeFormat instead +</pre> + +<h2 id="Тип_помилки">Тип помилки</h2> + +<p>Застереження. Виконання JavaScript не буде зупинене.</p> + +<h2 id="Що_сталось">Що сталось?</h2> + +<p>Нестандартний метод {{jsxref("Date.prototype.toLocaleFormat")}} застарів та більше не рекомендований до використання. Він використовує рядок форматування в такому ж форматі, який очікується функцією <code>strftime()</code> у C. <strong>Функція більше недоступна у Firefox 58+</strong>.</p> + +<h2 id="Приклади">Приклади</h2> + +<h3 id="Застарілий_синтаксис">Застарілий синтаксис</h3> + +<p>Метод {{jsxref("Date.prototype.toLocaleFormat")}} застарів та буде прибраний (без кросбраузерної підтримки, доступний лише у Firefox).</p> + +<pre class="brush: js example-bad notranslate">var today = new Date(); +var date = today.toLocaleFormat('%A, %e. %B %Y'); + +console.log(date); +// У німецькій локалі +// "Freitag, 10. März 2017"</pre> + +<h3 id="Альтернативний_стандартний_синтаксис_за_допомогою_ECMAScript_Intl_API">Альтернативний стандартний синтаксис за допомогою ECMAScript Intl API</h3> + +<p>Стандарт ECMA-402 (ECMAScript Intl API) визначає стандартні об'єкти та методи, які вможливлюють чутливе до мови форматування дати та часу (доступні у Chrome 24+, Firefox 29+, IE11+, Safari10+).</p> + +<p>Ви тепер можете або використати метод {{jsxref("Date.prototype.toLocaleDateString")}}, якщо ви бажаєте просто відформатувати одну дату.</p> + +<pre class="brush: js example-good notranslate">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" +</pre> + +<p>Або ви можете скористатись об'єктом {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}}, який дозволяє кешувати об'єкт, в якому більшість обчислень вже зроблені, тому форматування відбувається швидко. Це корисно, якщо у вас є цикл дат для форматування.</p> + +<pre class="brush: js example-good notranslate">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" +</pre> + +<h3 id="Альтернативний_стандартний_синтаксис_з_використанням_методів_Date">Альтернативний стандартний синтаксис з використанням методів Date</h3> + +<p>Об'єкт {{jsxref("Date")}} пропонує декілька методів для створення налаштованого рядка дати.</p> + +<pre class="brush: js example-bad notranslate">(new Date()).toLocaleFormat("%Y%m%d"); +// "20170310" +</pre> + +<p>Можна перетворити на:</p> + +<pre class="brush: js example-good notranslate">let now = new Date(); +let date = now.getFullYear() * 10000 + + (now.getMonth() + 1) * 100 + now.getDate(); + +console.log(date); +// "20170310"</pre> + +<h2 id="Див._також">Див. також</h2> + +<ul> + <li>{{jsxref("Date.prototype.toLocaleFormat")}}</li> + <li>{{jsxref("Date.prototype.toLocaleDateString")}}</li> + <li>{{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}}</li> +</ul> 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 +--- +<p>{{jsSidebar("Errors")}}</p> + +<p>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 <code>name</code> and a <code>message</code>.</p> + +<p>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.</p> + +<h2 id="List_of_errors">List of errors</h2> + +<p>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!</p> + +<p>{{ListSubPages("/en-US/docs/Web/JavaScript/Reference/Errors")}}</p> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a href="/en-US/docs/Learn/JavaScript/First_steps/What_went_wrong">What went wrong? Troubleshooting JavaScript</a>: Beginner's introductory tutorial on fixing JavaScript errors.</li> +</ul> 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 +--- +<div>{{jsSidebar("Errors")}}</div> + +<p>Виняток, що викидається лише у <a href="/uk/docs/Web/JavaScript/Reference/Strict_mode">строгому режимі</a> JavaScript, "for-in loop head declarations may not have initializers", виникає, коли шапка циклу <a href="/uk/docs/Web/JavaScript/Reference/Statements/for...in">for...in</a> містить вираз ініціалізації, наприклад |<code>for (var i = 0 in obj)</code>|. Це не дозволено у циклах for-in у строгому режимі.</p> + +<h2 id="Повідомлення">Повідомлення</h2> + +<pre class="syntaxbox notranslate">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) +</pre> + +<h2 id="Тип_помилки">Тип помилки</h2> + +<p>{{jsxref("SyntaxError")}} лише у <a href="/uk/docs/Web/JavaScript/Reference/Strict_mode">строгому режимі</a>.</p> + +<h2 id="Що_сталось">Що сталось?</h2> + +<p>Шапка циклу<a href="/uk/docs/Web/JavaScript/Reference/Statements/for...in"> for...in</a> містить вираз ініціалізації. Тобто, було оголошено змінну та присвоєно їй значення |<code>for (var i = 0 in obj)</code>|. У нестрогому режимі таке оголошення просто ігнорується та сприймається як <code>|for (var i in obj)|</code>. Однак, у <a href="/en-US/docs/Web/JavaScript/Reference/Strict_mode">строгому режимі</a> викидається помилка <code>SyntaxError</code>.</p> + +<h2 id="Приклади">Приклади</h2> + +<p>Цей приклад викидає помилку <code>SyntaxError</code>:</p> + +<pre class="brush: js example-bad notranslate">"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 +</pre> + +<h3 id="Правильний_цикл_for-in">Правильний цикл for-in</h3> + +<p>Ви можете прибрати ініціалізатор (<code>i = 0</code>) з шапки циклу for-in.</p> + +<pre class="brush: js example-good notranslate">"use strict"; + +var obj = {a: 1, b: 2, c: 3 }; + +for (var i in obj) { + console.log(obj[i]); +} +</pre> + +<h3 id="Перебір_масиву">Перебір масиву</h3> + +<p>Цикл for...in <a href="/en-US/docs/Web/JavaScript/Reference/Statements/for...in#Array_iteration_and_for...in">не варто використовувати для перебору масиву</a>. Чи намагались ви використати цикл <code><a href="/uk/docs/Web/JavaScript/Reference/Statements/for">for</a></code> замість <code>for-in</code> для перебору {{jsxref("Array", "масиву")}}? Цикл <code>for</code> також дозволяє використання ініціалізатора:</p> + +<pre class="brush: js example-good notranslate">var arr = [ "a", "b", "c" ] + +for (var i = 2; i < arr.length; i++) { + console.log(arr[i]); +} + +// "c"</pre> + +<h2 id="Див._також">Див. також</h2> + +<ul> + <li><code><a href="/uk/docs/Web/JavaScript/Reference/Statements/for...in">for...in</a></code></li> + <li><code><a href="/uk/docs/Web/JavaScript/Reference/Statements/for...of">for...of</a></code> – також не дозволяє ініціалізатор як у строгому, так і у нестрогому режимах.</li> + <li><code><a href="/uk/docs/Web/JavaScript/Reference/Statements/for">for</a></code> – найкращий для перебору масивів, дозволяє визначати ініціалізатор.</li> +</ul> 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 +--- +<div>{{jsSidebar("Errors")}}</div> + +<h2 id="Повідомлення">Повідомлення</h2> + +<pre class="syntaxbox">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 +</pre> + +<h2 id="Тип_помилки">Тип помилки</h2> + +<p>{{jsxref("Global_Objects/SyntaxError", "SyntaxError")}}</p> + +<h2 id="Що_трапилося">Що трапилося?</h2> + +<p>Метод {{jsxref("JSON.parse()")}} здійснює розбір JSON в переданому рядку. Він викидає цю помилку, якщо рядок містить неправильний JSON (виявлено неналежний синтаксис).</p> + +<h2 id="Приклади">Приклади</h2> + +<h3 id="JSON.parse()_не_дозволяє_використовувати_прикінцеві_коми"><code>JSON.parse()</code> не дозволяє використовувати прикінцеві коми</h3> + +<p>Обидва наведені рядки викидають SyntaxError:</p> + +<pre class="brush: js example-bad">JSON.parse('[1, 2, 3, 4,]'); +JSON.parse('{"foo": 1,}'); +// SyntaxError JSON.parse: unexpected character +// at line 1 column 14 of the JSON data +</pre> + +<p>Задля належного розбору JSON оминайте використання прикінцевих ком:</p> + +<pre class="brush: js example-good">JSON.parse('[1, 2, 3, 4]'); +JSON.parse('{"foo": 1}');</pre> + +<h3 id="Ім'я_властивості_має_бути_рядком_в_подвійних_лапках">Ім'я властивості має бути рядком в подвійних лапках</h3> + +<p>Не можна використовувати одинарні лапки, як-от 'foo':</p> + +<pre class="brush: js example-bad">JSON.parse("{'foo': 1}"); +// SyntaxError: JSON.parse: expected property name or '}' +// at line 1 column 2 of the JSON data</pre> + +<p>Натомість має бути "foo":</p> + +<pre class="brush: js example-good">JSON.parse('{"foo": 1}');</pre> + +<h3 id="Провідні_нулі_та_десяткові_крапки">Провідні нулі та десяткові крапки</h3> + +<p>Не можна вказувати провідні нулі (як у числі 01) та розділові крапки без якнайменше одного десяткового знака:</p> + +<pre class="brush: js example-bad">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 +</pre> + +<p>Провідні нулі приберіть, а на місці відсутніх десяткових знаків (якщо жодного значущого немає) напишіть просто нуль:</p> + +<pre class="brush: js example-good">JSON.parse('{"foo": 1}'); +JSON.parse('{"foo": 1.0}'); +</pre> + +<h2 id="Див._також">Див. також</h2> + +<ul> + <li>{{jsxref("JSON")}}</li> + <li>{{jsxref("JSON.parse()")}}</li> + <li>{{jsxref("JSON.stringify()")}}</li> +</ul> 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 +--- +<div>{{jsSidebar("Errors")}}</div> + +<h2 id="Помилка">Помилка</h2> + +<pre class="syntaxbox">TypeError: Object.create requires more than 0 arguments +TypeError: Object.setPrototypeOf requires more than 1 argument +TypeError: Object.defineProperties requires more than 0 arguments +</pre> + +<h2 id="Тип_помилки">Тип помилки</h2> + +<p>{{jsxref("TypeError")}}.</p> + +<h2 id="Щось_пішло_не_так">Щось пішло не так?</h2> + +<p>Для виконання функції потрібні аргументи функції. Справа в тому, що для виконання функції потрібні параметри, ви повинні вказати їх на початок визову функції, в дужках.</p> + +<h2 id="Приклади">Приклади</h2> + +<p>Визов Object.create() функції потребує щонайменьше один! аргумент.</p> + +<p>Визов Object.setPrototypeOf({}) методу(функції) потребує два! аргументи.</p> + +<pre class="brush: js example-bad">var obj = Object.create(); +// TypeError: Object.create requires more than 0 arguments + +var obj = Object.setPrototypeOf({}); +// TypeError: Object.setPrototypeOf requires more than 1 argument +</pre> + +<p>Це можливо виправити вказавши аргументи функції під час визову, наприклад:</p> + +<pre class="brush: js example-good">var obj = Object.create(null); + +var obj = Object.setPrototypeOf({}, null);</pre> + +<h2 id="Дивись_також">Дивись також</h2> + +<ul> + <li><a href="/en-US/docs/Web/JavaScript/Guide/Functions">Functions</a></li> +</ul> 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 +--- +<div>{{jsSidebar("Errors")}}</div> + +<h2 id="Повідомлення">Повідомлення</h2> + +<pre class="syntaxbox">RangeError: argument out of range +RangeError: repeat count must be non-negative (Firefox) +RangeError: Invalid count value (Chrome) +</pre> + +<h2 id="Тип_помилки">Тип помилки</h2> + +<p>{{jsxref("RangeError")}}</p> + +<h2 id="Що_сталось">Що сталось?</h2> + +<p>Був викликаний метод {{jsxref("String.prototype.repeat()")}}. Він має параметр <code>count</code>, що вказує, скільки разів потрібно повторити рядок. Його значення має бути від 0 та менше за позитивну {{jsxref("Infinity","нескінченність")}}, та не може бути від'ємним числом. Діапазон дозволених значень можна описати так: [0, +∞).</p> + +<h2 id="Приклади">Приклади</h2> + +<h3 id="Помилкове_використання">Помилкове використання</h3> + +<pre class="brush: js example-bad">'абв'.repeat(-1); // RangeError </pre> + +<h3 id="Правильне_використання">Правильне використання</h3> + +<pre class="brush: js example-good">'абв'.repeat(0); // '' +'абв'.repeat(1); // 'абв' +'абв'.repeat(2); // 'абвабв' +'абв'.repeat(3.5); // 'абвабвабв' (count буде перетворений на ціле число) +</pre> + +<h2 id="Див._також">Див. також</h2> + +<ul> + <li>{{jsxref("String.prototype.repeat()")}}</li> +</ul> 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 +--- +<div>{{jsSidebar("Errors")}}</div> + +<h2 id="Повідомлення">Повідомлення</h2> + +<pre class="syntaxbox">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 +</pre> + +<h2 id="Тип_помилки">Тип помилки</h2> + +<p>{{jsxref("TypeError")}}</p> + +<h2 id="В_чому_справа">В чому справа?</h2> + +<p>Була спроба використати об'єкт чи змінну як конструктор, але сам об'єкт чи змінна не є конструктором. Дивись {{Glossary("constructor")}} чи <a href="/en-US/docs/Web/JavaScript/Reference/Operators/new"><code>new</code> operator</a> для більш детальної інформації.</p> + +<p>У JavaScript існує багато глобальних об'єктів, наприклад {{jsxref("String")}} чи {{jsxref("Array")}}, які можуть створюватись конструкторами використовуючи синтаксис <code>new</code>. Однак, деякі глобальні об'єкти не можуть, їх властивості і методи статичні. Наступні об'єкти являються стандартом JavaScript, вони вбудовані і не мають конструкторів: {{jsxref("Math")}}, {{jsxref("JSON")}}, {{jsxref("Symbol")}}, {{jsxref("Reflect")}}, {{jsxref("Intl")}}, {{jsxref("SIMD")}}, {{jsxref("Atomics")}}.</p> + +<p><a href="/en-US/docs/Web/JavaScript/Reference/Statements/function*">Генератори функцій</a> не можуть використовуватись також.</p> + +<h2 id="Приклади">Приклади</h2> + +<h3 id="Помилкові_випадки">Помилкові випадки</h3> + +<pre class="brush: js example-bad">var Car = 1; +new Car(); +// TypeError: Car не має конструктора + +new Math(); +// TypeError: Math не є конструктором + +new Symbol(); +// TypeError: Symbol не є конструктором + +function* f() {}; +var obj = new f; +// TypeError: f не є конструктором +</pre> + +<h3 id="Конструктор_Car">Конструктор Car</h3> + +<p>Для того щоб створити класс-конструктор, потрібно вказати його як функцію. В дужках ви можете вказати його статичні методи, наприклад виробника, модель, рік створення автомобілю. Щоб зробити це опишіть свою модель наступним чином:</p> + +<pre class="brush: js">function Car(make, model, year) { + this.make = make; + this.model = model; + this.year = year; +} +</pre> + +<p>Тепер ви можете створювати об'єкти классу Car, наприклад <code>mycar</code>:</p> + +<pre class="brush: js">var mycar = new Car('Eagle', 'Talon TSi', 1993);</pre> + +<h3 id="Обіцянка">Обіцянка</h3> + +<p>Спроба повернути з функції екземляр класу, з виконанням його методу, під час виконання якоїсь функції(з ходу), вам не потрібно використовувати синтаксис типу <em>new Promise(...)</em>.</p> + +<p>Це є помилкою(виклик конктруктору класу Promise поза синтаксисом), виконання коду буде зупинено з помилкою <code>TypeError: this is not a constructor</code> вийняток:</p> + +<pre class="brush: js example-bad">return new Promise.resolve(true); +</pre> + +<p>Замість цього використовуй статичні методи класу<a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/resolve"> Promise.resolve()</a> чи <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/reject">Promise.reject()</a> <a href="https://en.wikipedia.org/wiki/Method_(computer_programming)#Static_methods">static methods</a>:</p> + +<pre class="brush: js">// Це допустимо, але дуже нечитабельний синтаксис: +return new Promise((resolve, reject) => { resolve(true); }) + +// Замість цього, просто використовуйте статичні методи класу Promise: +return Promise.resolve(true); +return Promise.reject(false); +</pre> + +<h2 id="Дивись_також">Дивись також</h2> + +<ul> + <li>{{Glossary("constructor")}}</li> + <li><a href="/en-US/docs/Web/JavaScript/Reference/Operators/new"><code>new</code> operator</a></li> +</ul> 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 +--- +<div>{{jsSidebar("Errors")}}</div> + +<h2 id="Повідомлення">Повідомлення</h2> + +<pre class="syntaxbox">TypeError: "x" не є функцією +</pre> + +<h2 id="Тип_помилки">Тип помилки</h2> + +<p>{{jsxref("TypeError")}}.</p> + +<h2 id="Що_пішло_не_так">Що пішло не так?</h2> + +<p>Була с<span id="result_box" lang="uk"><span>проба викликати значення з функції, але значення насправді не є функцією.</span> <span>Деякий код очікує, що ви надішлете функцію, але це не відбулося</span></span>.</p> + +<p>Можило <span id="result_box" lang="uk"><span>в назві функції є опечатка?</span> Можливо <span>метод, що викликаєтся на об'єкті не має цієї функції?</span></span> Наприклад, об'єкти JavaScript не мають функції <code>map</code> , але об'єкт масиву JavaScript має.</p> + +<p><span id="result_box" lang="uk"><span>Є багато вбудованих функцій, які потребують функцій зворотнього виклику.</span> <span>Вам доведеться надати функцію, щоб ці методи працювали належним чином</span></span>:</p> + +<ul> + <li>Коли працюєте з {{jsxref("Array")}} або {{jsxref("TypedArray")}} об'єктами: + <ul> + <li>{{jsxref("Array.prototype.every()")}}, {{jsxref("Array.prototype.some()")}}, {{jsxref("Array.prototype.forEach()")}}, {{jsxref("Array.prototype.map()")}}, {{jsxref("Array.prototype.filter()")}}, {{jsxref("Array.prototype.reduce()")}}, {{jsxref("Array.prototype.reduceRight()")}}, {{jsxref("Array.prototype.find()")}}</li> + </ul> + </li> + <li>Коли працюєте з {{jsxref("Map")}} і {{jsxref("Set")}} об'єктами: + <ul> + <li>{{jsxref("Map.prototype.forEach()")}} та {{jsxref("Set.prototype.forEach()")}}</li> + </ul> + </li> +</ul> + +<h2 id="Приклади">Приклади</h2> + +<h3 id="Помилка_в_назві_фунції">Помилка в назві фунції</h3> + +<p>В цьому випадку, <span id="result_box" lang="uk"><span>що трапляється занадто часто, в назві методу є помилка</span></span>:</p> + +<pre class="brush: js example-bad">var x = document.getElementByID('foo'); +// TypeError: document.getElementByID is not a function +</pre> + +<p>Правильна назва функції є <code>getElementByI<strong>d</strong></code>:</p> + +<pre class="brush: js example-good">var x = document.getElementById('foo'); +</pre> + +<h3 id="Функція_що_викликана_на_неправильному_об'єкті">Функція, що викликана на неправильному об'єкті</h3> + +<p><span id="result_box" lang="uk"><span>Для деяких методів вам необхідно надати функцію зворотнього виклику, і вона буде працювати тільки на певних об'єктах</span></span>. Наприклад, використано {{jsxref("Array.prototype.map()")}}, який буде працювати лише з об'єктом {{jsxref("Array")}}.</p> + +<pre class="brush: js example-bad">var obj = {a: 13, b: 37, c: 42}; + +obj.map(function(num) { + return num * 2; +}); + +// TypeError: obj.map is not a function</pre> + +<p>Використовуйте замість цього масив:</p> + +<pre class="brush: js example-good">var numbers = [1, 4, 9]; + +numbers.map(function(num) { + return num * 2; +}); + +// Array [2, 8, 18] +</pre> + +<h3 id="Функція_має_назву_що_співпадає_з_існуючою_раніш_властивістю"><span class="short_text" id="result_box" lang="uk"><span>Функція має назву, що співпадає з існуючою раніш властивістю</span></span></h3> + +<p><span id="result_box" lang="uk"><span>Іноді під час створення класу ви можете мати властивість та функцію з тим самим ім'ям.</span> <span>Після виклику функції компілятор вважає, що функція перестає існувати.</span></span></p> + +<pre class="brush: js example-bad">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 +</pre> + +<p><span class="short_text" id="result_box" lang="uk"><span>Використовуйте інше ім'я властивості</span></span>:</p> + +<pre class="brush: js example-good">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' } +</pre> + +<h2 id="Дивись_також">Дивись також</h2> + +<ul> + <li><a href="/en-US/docs/Web/JavaScript/Reference/Functions">Функції</a></li> +</ul> 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 +--- +<div>{{jsSidebar("Errors")}}</div> + +<h2 id="Повідомлення">Повідомлення</h2> + +<pre class="syntaxbox">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) +</pre> + +<h2 id="Тип_помилки">Тип помилки</h2> + +<p>{{jsxref("RangeError")}}</p> + +<h2 id="Що_сталось">Що сталось?</h2> + +<p>Був викликаний метод {{jsxref("String.prototype.repeat()")}}. Він має параметр <code>count</code>, що вказує, скільки разів потрібно повторити рядок. Його значення має бути від 0 та менше за позитивну {{jsxref("Infinity","нескінченність")}}, та не може бути від'ємним числом. Діапазон дозволених значень можна описати так: [0, +∞).</p> + +<p>Отриманий в результаті рядок також не може бути більшим за максимальний розмір рядка, який може відрізнятись між рушіями JavaScript. У Firefox (SpiderMonkey) максимальний розмір рядка дорівнює 2<sup>28</sup> -1 (<code>0xFFFFFFF</code>).</p> + +<h2 id="Приклади">Приклади</h2> + +<h3 id="Помилкове_використання">Помилкове використання</h3> + +<pre class="brush: js example-bad">'абв'.repeat(Infinity); // RangeError +'а'.repeat(2**28); // RangeError +</pre> + +<h3 id="Правильне_використання">Правильне використання</h3> + +<pre class="brush: js example-good">'абв'.repeat(0); // '' +'абв'.repeat(1); // 'абв' +'абв'.repeat(2); // 'абвабв' +'абв'.repeat(3.5); // 'абвабвабв' (count буде перетворений на ціле число) +</pre> + +<h2 id="Див._також">Див. також</h2> + +<ul> + <li>{{jsxref("String.prototype.repeat()")}}</li> +</ul> |