Здравствуйте! В этом уроке я хотел бы заострить ваше внимание на таком вопросе как приведение типов в Javascript. Поскольку язык JavaScript является не строго типизированным языком программирования, то необходимо разобраться как в нем приводятся типы данных. Например вот здесь:
var num1 = "49"; var num2 = "3"; var result = num1 + num2; console.log(result); //493
В данном примере обе переменные — это строки, а строки ведут себя несколько иначе и несмотря что к ним применяется операция арифметического сложения и казалось бы ожидаемый результат 52, но строки будут просто склеиваться и мы получим в итоге 493.
Если вы хотите строки именно складывать для этого их надо преобразовать в число — это делает функция parseInt():
var num1 = "49"; var num2 = "3"; var res = parseInt(num1) + parseInt(num2); console.log(result); // 52
Ну а для перевода строк в числа с запятой то есть дробные применяется такая функция как parseFloat():
var num = "47.07"; var num2 = "3.83"; var res = parseFloat(num1) + parseFloat(num2); console.log(result); //50.90
В случае если строка имеет, как текст, так и числа «456adress». Функция parseInt() попытается найти число, а строку отбросить:
var str1 = "456address"; var num = parseInt(str1); console.log(num2); // 456
А вот ежели функции не удастся выполнить преобразование, то она вернет значение NaN (Not a Number), это значение говорит о том, что строка не представляет число, и поэтому не может быть преобразована.
Для того чтобы проверить, является ли переменная числом или нет существует функция isNaN() — возвращает true если не число, а если число вернет false. Да вот так все немного запутано.
var str1 = "script"; var str2 = "22"; var res = isNaN(str1); console.log(res); //true - str1 не является числом res = isNaN(str2); console.log(res); //false - num2 - это число
Хочется отметить одну особенность функции parseInt(), а именно при переводе есть возможность указать систему счисления в которую надо переводить и она переведет в заданную систему счисления:
var str11 = "111"; var str2 = parseInt(num1, 2); console.log(str2); //7
В результате получим 7, так как число 111 — это 7 в десятичной системе.
Ну и на закрепление напишем небольшой скрипт, в котором приведем пример преобразования переменных:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>JavaScript сценарий</title> </head> <body> <script> var strSumVklad = prompt("Введите пожалуйста сумму вклада", 1000); var strPercentStavka = prompt("Введите процентную ставку", 10); var summa = parseInt(strSumVklad); var procenty = parseInt(strPercentStavka); summa = summa + summa * procenty / 100; document.write("После начисления процентов ваша сумма вклада составит: " + summa); </script> </body> </html>
Видео о приведении типов в JavaScript
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Об авторе