@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.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы