Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Преобразование типов

Часто значение приходит не того типа, который нужен: возраст из поля формы — строкой, число нужно вывести как текст. Превращение значения одного типа в другой называют преобразованием типов.

Строка в число

Функция Number() превращает строку в число. После этого с ним можно считать:

console.log(Number('42') + 1); // 43

Если строку нельзя прочитать как число, получится NaN — «не число»:

console.log(Number('сорок')); // NaN

parseInt и parseFloat

Number() строг: любые лишние символы дают NaN. Функции parseInt() и parseFloat() читают число с начала строки и останавливаются на первом неподходящем символе:

console.log(parseInt('12px'));     // 12
console.log(parseFloat('3.5 кг')); // 3.5
console.log(Number('12px'));       // NaN

parseInt() возвращает целое число, а parseFloat() сохраняет дробную часть. Они удобны, когда к числу приписаны единицы измерения.

Число в строку

Функция String() превращает любое значение в строку. Тот же результат даёт метод toString():

console.log(String(42) + 1); // 421

Теперь + склеивает, а не складывает: '42' + 1 даёт '421'.

Логическое значение

Функция Boolean() отвечает на вопрос, считается ли значение истинным. Ложными считаются всего шесть значений: false, 0, пустая строка '', null, undefined и NaN. Всё остальное — истина:

console.log(Boolean(0));      // false
console.log(Boolean('0'));    // true
console.log(Boolean('текст')); // true

Строка '0' истинна: она не пустая, внутри есть символ.

Неявное преобразование

Иногда JavaScript преобразует типы сам, без вашей просьбы, — это неявное преобразование. Операторы -, * и / превращают строки в числа, а + при строке превращает число в строку:

console.log('6' * '2'); // 12
console.log('6' + 2);   // 62

Такой код легко понять неправильно, поэтому лучше преобразовывать типы явно — через Number() и String().

Частая ошибка

Пустая строка и строка из пробелов превращаются не в NaN, а в ноль. Поэтому пустое поле формы незаметно превращается в число 0:

console.log(Number(''));  // 0
console.log(Number(' ')); // 0

Если пустое значение должно считаться ошибкой, сначала проверьте, что строка не пустая, и только потом преобразуйте её.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.