Преобразования данных
Нередко возникает необходимость преобразовать одни данные в другие. Некоторые преобразования javascript выполняет автоматически, например:
let number1 = "56";
let number2 = 4;
let result = number1 + number2;
// 564
console.log(result);
Здесь переменная number1 представляет строку, а точнее строковое представление числа. А переменная number2 представляет число. И в итоге мы получим не число 60, а строку 564.
При сложении преобразования в JavaScript производятся по принципу:
- Если оба операнда представляют числа, то происходит обычное арифметическое сложение
- Если один из операндов строка, то оба операнда преобразуются в строки и производится объединение строк
Встроенные функции для преобразований
String ()
Функция String() и позволяет получить строковое представление значение. Так, выражение String(number2) получает строковое представление number2, то есть из числа 4 получает строку "4".
ParseInt ()
Для преобразования строки в целое число применяется функция parseInt():
let number1 = "56";
let number2 = 4;
let result = parseInt(number1) + number2;
// 60
console.log(result);
При этом строка может иметь смешанное содержимое, например, "123hello", то есть в данном случае есть цифры, но есть и обычные символы. Функция parseInt() все равно попытается выполнить преобразование — она последовательно, начиная с первого символа, считывает цифры, пока не встретит первый нецифровой символ:
let num1 = "123hello";
let num2 = parseInt(num1);
// 123
console.log(num2);
NaN и isNaN
Если функции parseInt() не удастся выполнить преобразование, то он возвращает значение NaN (Not a Number), которое говорит о том, что строка не представляет число и не может быть преобразована. Что интересно, само значение NaN (не число) представляет тип number:
// NaN
console.log(parseInt("abc"));
let type = typeof NaN;
// number
console.log(type);
С помощью специальной функции isNaN() можно проверить, представляет ли строка число. Если строка не является числом, то функция возвращает true, если это число — то false:
let num1 = "javascript";
let num2 = "22";
let result = isNaN(num1);
// true - num1 не является числом
console.log(result);
result = isNaN(num2);
// false - num2 - это число
console.log(result);