• Страница 1 из 1
  • 1
Модератор форума: webik  
Форум » JavaScript и jQuery » JavaScript » Объединение чисел и строк (Автоматическое преобразование типов данных)
Объединение чисел и строк
webikДата: Вс, 17.03.2019, 23:52 | Сообщение # 1
Offline
К примеру, нужно вывести на странице сайта сообщение, в котором содержится информация, сколько раз посетитель был на вашей странице.
Количество визитов посетителя - это число, а сообщение - строка. Используя оператор сложения (+), происходит преобразование числа в строку, а затем полученная строка соединяется с другой:

Код
var количество_посещений = 100;
var сообщение = 'Вы посетили этот сайт ' + количество_посещений + ' раз.';


Получившееся сообщение в итоге (оно сохранится в переменной сообщение):

Цитата
'Вы посетили этот сайт 100 раз.'


Это возможно благодаря тому, что интерпретатор JavaScript, видя, что здесь присутствует изначально строка, не воспринимает знак + как команду к математической операции сложения, а воспринимает его как оператор объединения строк, поэтому он преобразует число в строку и после этого производит объединение строк.

Каждый раз, когда вы используете оператор + по отношению к числу и строке, интерпретатор JavaScript преобразует число в строку.
 
профиль цитата изменить удалить
webikДата: Пн, 18.03.2019, 00:16 | Сообщение # 2
Offline
Возможные проблемы автоматического преобразования типов данных

Допустим, у вас сайт интернет-магазина, и покупатель, заполняя какую-то форму, на вопрос о количестве нужного ему товара, вводит число, например, 3.
Данные форм в итоге мы получаем в виде строки, поэтому те данные, что ввёл покупатель, сохранятся в какой-то переменной в виде строки:

Код
var пар_обуви = '3';
var пар_носков = 4;
var всего_предметов = пар_обуви + пар_носков;


Вы думаете, что в переменной всего_предметов сохранится число 3 + 4 = 7?

Как бы не так. Интерпретатор JavaScript, видя, что в переменной пар_обуви значение строка, преобразует значение переменной пар_носков также в строку, в результате чего вы получите не ожидаемое число 7, а строку '34'.

Как этого избежать?

Добавить знак + в начале строки, содержащей число (без пробела!):

Код
var пар_обуви = '3';
var пар_носков = 4;
var всего_предметов = +пар_обуви + пар_носков;


тем самым вы просите интерпретатор JavaScript попытаться преобразовать эту строку в числовое выражение, и если она содержит только числа, например, как в данном примере, '3', то это удастся, и вы получите в результате 3 + 4 = 7.

А можно использовать команду Number():

Код
var пар_обуви = '3';
var пар_носков = 4;
var всего_предметов = Number(пар_обуви) + пар_носков;


Команда Number() преобразует строку в число, если это возможно. В противном случае вы получите значение NaN (не число)
 
профиль цитата изменить удалить
Форум » JavaScript и jQuery » JavaScript » Объединение чисел и строк (Автоматическое преобразование типов данных)
  • Страница 1 из 1
  • 1
Поиск: