1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
---
title: NaN
slug: Web/JavaScript/Reference/Global_Objects/NaN
tags:
- JavaScript
- Властивість
- Довідка
translation_of: Web/JavaScript/Reference/Global_Objects/NaN
---
<div>{{jsSidebar("Objects")}}</div>
<p>Глобальна властивість <code><strong>NaN</strong></code> - це значення, що служить для відображення "не числа" (Not-A-Number).</p>
<p>{{js_property_attributes(0,0,0)}}</p>
<div>{{EmbedInteractiveExample("pages/js/globalprops-nan.html")}}</div>
<p class="hidden">Джерело цих інтерактивних прикладів зберігається у репозиторії на GitHub. Якщо ви маєте бажання зробити свій внесок у проект інтерактивних прикладів - будь ласка, зклонуйте репозиторій <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> та пришліть нам pull request.</p>
<h2 id="Опис">Опис</h2>
<p><code>NaN</code> є властивістю <em>глобального об'єкта</em>. Іншими словами, це змінна глобальної області видимості.</p>
<p>Початковим значенням <code>NaN</code> є "не число" — так само, як і значення {{jsxref("Number.NaN")}}. У сучасних переглядачах <code>NaN</code> — це властивість, недоступна для запису та налаштування. Навіть якщо у вашому випадку це не так, уникайте її перевизначення. У програмах <code>NaN</code> застосовується досить рідко.</p>
<p>Існує п'ять різних типів операцій, що повертають <code>NaN</code>:</p>
<ul>
<li>Число не може бути розібране (наприклад, <code>parseInt("blabla")</code> чи <code>Number(undefined)</code>)</li>
<li>Математична операція, в якій результат не є дійсним числом (наприклад, <code>Math.sqrt(-1)</code>)</li>
<li>Операндом аргументу є NaN (наприклад, <code>7 ** NaN</code>)</li>
<li>Невизначеності (наприклад, 0 * <code>Infinity</code>)</li>
<li>Будь-яка операція, що містить рядок та не є операцією додавання (наприклад, "ква"/3)</li>
</ul>
<h2 id="Приклади">Приклади</h2>
<h3 id="Первірка_на_NaN">Первірка на <code>NaN</code></h3>
<p><code>NaN</code> не дорівнює (через <code>==</code>, <code>!=</code>, <code>===</code> та <code>!==</code>) будь-якому значенню, в тому числі іншому значенню NaN. Використовуйте {{jsxref("Number.isNaN()")}} або {{jsxref("Global_Objects/isNaN", "isNaN()")}}, щоб якнайточніше визначити, чи значення є NaN. Або ж виконуйте порівняння аргументу із самим собою: тільки NaN не дорівнює собі.</p>
<pre class="brush: js notranslate">NaN === NaN; // false
Number.NaN === NaN; // false
isNaN(NaN); // true
isNaN(Number.NaN); // true
function valueIsNaN(v) { return v !== v; }
valueIsNaN(1); // false
valueIsNaN(NaN); // true
valueIsNaN(Number.NaN); // true
</pre>
<p>Однак, пам'ятайте про відмінність між <code>isNaN()</code> та <code>Number.isNaN()</code>: перший поверне <code>true</code>, якщо аргумент є <code>NaN</code>, або якщо він стане <code>NaN</code> після приведення до чисельного типу, в той час як другий поверне <code>true</code> лише у випадку, якщо аргумент на даний момент є <code>NaN</code>:</p>
<pre class="brush: js notranslate">isNaN('привіт'); // повертає 'true'.
Number.isNaN('привіт'); // повертає 'false'.
</pre>
<p>Додатково, деякі методи масивів не знаходять NaN, в той час, як інші знаходять.</p>
<pre class="brush: js notranslate">let arr = [2, 4, NaN, 12];
arr.indexOf(NaN); // -1 (false)
arr.includes(NaN); // true
arr.findIndex(n => Number.isNaN(n)); // 2</pre>
<h2 id="Специфікації">Специфікації</h2>
<table class="standard-table">
<tbody>
<tr>
<th scope="col">Специфікація</th>
</tr>
<tr>
<td>{{SpecName('ESDraft', '#sec-value-properties-of-the-global-object-nan', 'NaN')}}</td>
</tr>
</tbody>
</table>
<h2 id="Підтримка_у_веб-переглядачах">Підтримка у веб-переглядачах</h2>
<div class="hidden">Таблиця сумісності на цій сторінці сформована автоматично із структурованих даних. Якщо ви маєте бажання зробити свій внесок до цих даних - будь-ласка, ось репозиторій <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a>, надішліть нам свій pull request.</div>
<p>{{Compat("javascript.builtins.NaN")}}</p>
<h2 id="Дивіться_також">Дивіться також</h2>
<ul>
<li>{{jsxref("Number.NaN")}}</li>
<li>{{jsxref("Number.isNaN()")}}</li>
<li>{{jsxref("isNaN", "isNaN()")}}</li>
</ul>
|