Isnan - javascript, mdn

Функція isNaN () визначає чи є буквальний або змінна не числовим значенням (NaN) чи ні. При роботі з функцією необхідно проявляти обережність так як вона не функціонує належним чином. Якщо вам цікаво докладніше можна подивитися Number.isNaN () то як вона описана в ECMAScript 6, в якості альтернативного рішення можна використовувати typeof для перевірки литерала або змінної на НЕ числове значення.

Значення Літерал або змінна які будуть перевірятися на НЕ числове значення.

Для чого потрібна функція isNaN?

Примітка:

Для альтернативної перевірки змінної на NaN без використання функції isNaN () можна скористатися конструкцією x! == x

Генерація значення NaN

Значення NaN генеруються арифметичними операціями, результатом яких є undefined або unrepresentable. Такі умови не обов'язково позначають переповнення стека. NaN також може бути результатом спроби перетворення числа в рядок, або значення, що не має еквівалента в простих числових примітивах.

Наприклад, розподіл нуля на нуль повертає NaN - але розподіл інших чисел на 0 не повертає NaN.

особливості поведінки

Із самого раннього версій функції isNaN її поведінку для НЕ числових змінних або литералов було досить-таки заплутаним. Коли аргументом функції isNaN є змінна, тип якої не Number. вона перетвориться до типу Number. Отримане значення потім перевіряється, чи є воно NaN. Таким чином для НЕ числових значень, які можна перетворити в числовий тип без НЕ-NaN значення (зокрема, порожній рядок або логічні примітиви, які перетворюються в 0 або 1), яке значення "false" може бути повною несподіванкою; порожній рядок перетвориться в "not a number." Плутанина пов'язана з тим, що "not a number" має певне значення, описане в стандарті IEEE-794 чисел з плаваючою точкою. Функцію варто сприймати як відповідь на питання, "Чи є це значення коректним числом за стандартом IEEE-794?"

У наступній версії ECMAScript (ES6) функція Number.isNaN () також присутній. Number.isNaN (x) буде надійним методом для перевірки, чи містить x значення NaN чи ні. Навіть з Number.isNaN. однак, результатом NaN залишається точне числове значення, а не просто "not a number".

Специфікація

Схожі статті