На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

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





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



Расширения для браузера Chrome: быстро и просто
AI Factory's Chess, уровень 11, 23 мая 2016 - С. Визгорев


© upread.ru 2013-2023
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.