isFinite(n)
Итак, в JavaScript есть обычные числа и три специальных числовых значения: NaN , Infinity и ‐Infinity . Тот факт, что они, хоть и особые, но – числа, демонстрируется работой оператора + :
var value = prompt("Введите Infinity", 'Infinity');
var number = +value;
alert( number ); // Infinity, плюс преобразовал строку "Infinity" к такому "числу"
Обычно если мы хотим от посетителя получить число, то Infinity или NaN нам не подходят. Для того, чтобы отличить «обычные» числа от таких специальных значений, существует функция isFinite .
Функция isFinite(n) преобразует аргумент к числу и возвращает true , если это не NaN/Infinity/‐Infinity :
alert( isFinite(1) ); // true
alert( isFinite(Infinity) ); // false alert( isFinite(NaN) ); // false
Преобразование к числу
Большинство арифметических операций и математических функций преобразуют значение в число автоматически. Для того, чтобы сделать это явно, обычно перед значением ставят унарный плюс '+' :
var s = "12.34"; alert( +s ); // 12.34
При этом, если строка не является в точности числом, то результат будет NaN :
alert( +"12test" ); // NaN
Единственное исключение – пробельные символы в начале и в конце строки, которые игнорируются:
alert( +" ‐12" ); // ‐12
alert( +" \n34 \n" ); // 34, перевод строки \n является пробельным символом alert( +"" ); // 0, пустая строка становится нулем
alert( +"1 2" ); // NaN, пробел посередине числа ‐ ошибка
Аналогичным образом происходит преобразование и в других математических операторах и функциях:
alert( '12.34' / "‐2" ); // ‐6.17
Мягкое преобразование: parseInt и parseFloat
В мире HTML/CSS многие значения не являются в точности числами. Например, метрики CSS: 10pt или ‐12px . Оператор '+' для таких значений возвратит NaN :
alert(+"12px") // NaN
Для удобного чтения таких значений существует функция parseInt :
alert( parseInt('12px') ); // 12
Функция parseInt и ее аналог parseFloat преобразуют строку символ за символом, пока это возможно.
При возникновении ошибки возвращается число, которое получилось. Функция parseInt читает из строки целое число, а parseFloat – дробное.
alert( parseInt('12px') ) // 12, ошибка на символе 'p'
alert( parseFloat('12.3.4') ) // 12.3, ошибка на второй точке
Конечно, существуют ситуации, когда parseInt/parseFloat возвращают NaN . Это происходит при ошибке на первом же символе:
alert( parseInt('a123') ); // NaN
Функция parseInt также позволяет указать систему счисления, то есть считывать числа, заданные в шестнадцатиричной и других системах счисления:
alert( parseInt('FF', 16) ); // 255
Do'stlaringiz bilan baham: |