Преобразования данных
Нередко возникает необходимость преобразовать одни данные в другие. Некоторые преобразования 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);