JS: сложение иногда совсем не сложение


Посмотрите на простой код. Каков будет результат алерта?

localStorage.setItem("fg",1);

var a = localStorage.getItem("fg");
var b = 2;
var c = a + b;

alert (c);
Вы сказали 3? Вы не угадали. Результат 12! Давайте разберемся, почему так происходит.

Так как в JavaScript мы не указываем типы переменных явно, то и могут произойти такие вот парадоксы. Да и знак плюс здесь также обозначает как непосредственно сложение, так и конкантенацию (присоединение) строк. В нашем случае интерпретатор JS посчитал именно, что произошло соединение двух строковых переменных. Точнее, он посчитал первую строкой, а тип второй уже неважен. Как этого избежать в данном случае?

Все просто. С помощью parseInt. Изменим четвертую строку.

var a = parseInt(localStorage.getItem("fg"));
Теперь имеем тот результат, который нам нужен.



Интересно, что строкой переменная a будет считаться только при сложении, а при сравнении ваш браузер выдаст требуемый результат. Будьте внимательны!
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегизаметки, javascript




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Мои программы
jQuery - это просто!
Неочевидный взлом сайта