Page 83 - 6105
P. 83
Вона перетворює рядок в число аналогічно +, а потім поверне true, якщо це
NaN, тобто якщо перетворення не вдалося:
var x = prompt ( "Введіть значення", "-11.5");
if (isNaN (x)) {
alert ( "Рядок перетворилася в NaN. Чи не число");
} Else {
alert ( "Число");
}
Однак, у такої перевірки є дві особливості:
порожній рядок і рядок з пробільних символів перетворюються до 0,
тому вважаються числами.
якщо застосувати таку перевірку не до рядка, то можуть бути
сюрпризи, зокрема isNaN вважатиме числами значення false, true,
null, так як вони хоча і не числа, але перетворюються до них.
alert (isNaN (null)); // false - НЕ NaN, тобто "Число"
alert (isNaN ( "\ n \ n")); // false - НЕ NaN, тобто
"Число"
Якщо така поведінка допустима, то isNaN - прийнятний варіант. Якщо ж
потрібна дійсно точна перевірка на число, яка не вважає числом рядок з пробілів,
логічні та спеціальні значення, а також відсікає Infinity доцільно використовувати
використовуйте функцію isNumeric:
function isNumeric (n) {
return! isNaN (parseFloat (n)) && isFinite (n);
}
Функція перетворює аргумент до числа і повертає true, якщо це не Infinity /
-Infinity / NaN. Таким чином, права частина відсіє свідомо не-числа, але залишить
такі значення як true / false / null і порожній рядок , так як вони коректно
82