@ArturPetrov

Почему таким образом осуществляют операцию присвоения?

Есть такая задача:
При помощи цикла for вывести на экран числа от 1 до 10 массива mass.
Решение:
var mass = [1,2,3,4,5,6,7,8,9,10];
var out= " ";
for(i = 0; i < mass.length; i++){
	out = out + mass[i];
}
document.getElementById('root').innerHTML = out;


Почему пишут вот так:
out = out + mass[i];
Зачем писать еще раз out после "="?

Я проверил если написать просто:
out = mass[i];
Тогда на экран будет выведено только последний элемент- тоесть 10. Но почему так?
  • Вопрос задан
  • 97 просмотров
Решения вопроса 4
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Потому, что приращение.

out - строка
mass - массив целых чисел.
"+" для строк в JS - конкатенация: склейка значений.
Если значение переменной выражения не строковая литера - переменная приводится к ней непосредственно перед конкатенацией.

Вариант: out = out + mass[i]; равен out += mass[i];
Ответ написан
Комментировать
DevMan
@DevMan
потому что написав out = mass[i]; ты теряешь предыдущее значение переменной.
Ответ написан
@dmalapsh
out содержит текущее состояние переменной, к примеру "123", если ты выполнишь операцию out = mass[3], то заполнишь переменную четвертым значением(т.к. начинается с 0) массива mass в твоем случаи это 4. Как итог у тебя в этой переменной будет только это значение("4"), в js знак "+" является не только операцией сложения чисел, но и знаком конкатенации. То есть к строке out(с содержанием "123"), приклеиться еще и строка "4"(mass[3]) и в итоге получиться новая строка с содержанием "1234" и положиться в значение переменной out удалив предыдущее значение
Ответ написан
Комментировать
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
Тогда почему мне на экран вывело все элементы масива а не один? (тоесть результат их сложения). Почему не вывело 55?

Потому что javascript. $out изначально — строка. Когда вы выполняете конкатенацию строки с числом, число приводится к строке. Когда вы складываете строки — они склеиваются. Вот вам и результат.
Замените строку var out= " "; на var out= 0; и получите на выходе 55.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
summer Ярославль
от 100 000 до 140 000 ₽
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
19 апр. 2024, в 20:43
20000 руб./за проект
19 апр. 2024, в 20:11
500 руб./за проект