Когда строка используется в числовом контексте, она автоматически преобразу_ ется в число. Например, следующее выражение является вполне допустимым:
var product = "21" * "2"; // в результате получится число 42.
Это обстоятельство можно взять на вооружение при необходимости преобразо_ вать строку в число; для этого достаточно просто вычесть из строки значение 0:
var number = string_value _ 0;
(Будьте внимательны: операция сложения в данной ситуации будет интерпрети_ рована как операция конкатенации строк.)
Менее изощренный и более прямолинейный способ преобразования строки в чис_ ло заключается в обращении к конструктору Number() как к обычной функции:
var number = Number(string_value);
Недостаток такого способа преобразования строки в число заключается в его чрезмерной строгости. Этот способ может использоваться только для преобразо_ вания десятичных чисел, и хотя он допускает наличие ведущих и оконечных символов пробела, появление других нецифровых символов после числа в строке недопустимо.
Более гибкий способ преобразования обеспечивается функциями parseInt() и par_ seFloat(). Эти функции преобразуют и возвращают произвольные числа, стоя_ щие в начале строки, игнорируя любые нецифровые символы, расположенные вслед за числом. Функция parseInt() выполняет только целочисленное преобра_ зование, тогда как parseFloat() может преобразовывать как целые, так и вещест_ венные числа. Если строка начинается с символов «0x» или «0X», функция par_ seInt() интерпретирует строку как шестнадцатеричное число.1 Например:
parseInt("3 слепых мышки");
// Вернет 3
parseFloat("3.14 метров");
// Вернет 3.14
parseInt("12.34");
//
Вернет
parseInt("0xFF");
//
Вернет
В качестве второго аргумента функция parseInt() может принимать основание системы счисления. Корректными значениями являются числа в диапазоне от 2 до 36, например:
parseInt("11", 2);
// Вернет 3 (1*2 +
1)
parseInt("ff",
16);
// Вернет 255 (15*16
+
15)
parseInt("zz",
36);
// Вернет 1295 (35*36
+ 35)
parseInt("077",
8);
//
Вернет
(7*8 + 7)
parseInt("077",
10);
//
Вернет
(7*10
+
7)
1 Стандарт ECMAScript утверждает, что если строка начинается с символа «0» (но не «0x» или «0X»), функция parseInt() может интерпретировать строку как число и в восьмеричном, и в десятичном представлении. Поскольку поведение функции четко не определено, следует избегать использования функции parseInt() для ин_ терпретации строк, начинающихся с «0», или явно указывать основание системы счисления.
3.3. Логические значения
Если методы parseInt() и parseFloat() оказываются не в состоянии выполнить преобразование, они возвращают значение NaN:
parseInt("eleven"); // Вернет NaN parseFloat("$72.47"); // Вернет NaN