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 - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.