function getTotal() {
let total = 0;
for (var i = 0; i < 10; i++) {
let valueToAdd = i;
var multiplier = 2;
total += valueToAdd * multiplier;
console.log(total);
}
return total;
}
console.log(
getTotal()
);
Это была моя оценка, что на каждой итерации цикла общая сумма должна быть:
а) 2, 4, 6, 8, 10... и т.д.
но вместо этого я получаю следующие ответы: b) 0,2,6,12,20,30,42..... 90
Где в моем коде репликация шаблона этого последующего добавления?
Почему я не получаю первоначальный ответ, который я намеревался в a)?
Просто используйте total = valueToAdd * multiplier;
вместо того, чтобы добавлять результат каждой итерации к total
чтобы получить ожидаемый результат.
function getTotal() {
let total = 0;
for (var i = 0; i < 10; i++) {
let valueToAdd = i;
var multiplier = 2;
total = valueToAdd * multiplier;
console.log(total);
}
return total;
}
console.log(getTotal());
Также обратите внимание, что он возвращает 0
, чтобы избежать запуска итерации с i=1
и условия как i<=10
.
Из-за моей низкой репутации (<50) я не могу добавить комментарий. Поэтому я даю ему новый ответ.
total + = valueToAdd * множитель; совпадает с 「total = total + valueToAdd * multiplier;」
потому что total, valueToAdd и множитель - все числа, оператор + сделает арифметическое дополнение.
total = total + valueToAdd * multiplier = 0 + 0 * 2 = 0 (при я = 0)
total = total + valueToAdd * multiplier = 0 + 1 * 2 = 2 (при я = 1)
total = total + valueToAdd * multiplier = 2 + 2 * 2 = 6 (при я = 2)
total = total + valueToAdd * multiplier = 6 + 3 * 2 = 12 (при я = 3)
total = total + valueToAdd * multiplier = 12 + 4 * 2 = 20 (при я = 4)
почему вы получаете 0,2,6,12,20...
Но если мы изменим линию 「, пусть total = 0;」 - 「пусть total = '0';」. Теперь оператор + будет использоваться для конкатенации (добавления) строк
total = total + valueToAdd * multiplier = '0' + 0 * 2 = '0' + 0 = '00' (при я = 0)
total = total + valueToAdd * multiplier = '00' + 1 * 2 = '00' + 2 = '002' (при я = 1)
total = total + valueToAdd * multiplier = '002' + 2 * 2 = '002' + 4 = '0024' (при я = 2)
total = total + valueToAdd * multiplier = '0024' + 3 * 2 = '0024' + 6 = '00246' (при я = 3)
total = total + valueToAdd * multiplier = '00246' + 4 * 2 = '002468' (при я = 4)
вы получите итоговую строку "002468... 18".
Если это то, что вы хотите, и вы хотите, чтобы строки были от "2". Выполните следующую модификацию
пусть total = ''; // пустая строка
для (var я = 1; я <10; i++) {//i начинается с 1
и вы получите "24681012141618".
На третьем итерационном total += valueToAdd * multiplier
Переводит на 2 += 2 * 2
С вашим предполагаемым результатом ваш код должен быть total = valueToAdd * multiplier
Таким образом, каждая итерация значения total
будет перекрываться по формуле В то время как текущий добавляет результат формулы к переменным общей сложности, в этом случае (типе данных целого числа) будет подведено
Вы добавляете и умножаете оба значения, используя
total += valueToAdd * multiplier;
Итак, если вы хотите реализовать путем умножения, вы должны делать
total = valueToAdd * multiplier;
но если вы хотите реализовать, добавив, вы должны делать
total += multiplier;
valueToAdd
на каждой итерации. Удалите его полностью и используйтеtotal += multiplier;
?total += valueToAdd * multiplier;
Вы печатаете2, 2+4, 2+4+6, 2+4+6+8, 2+4+6+8+10
. Вы, вероятно, хотитеtotal = valueToAdd * multiplier;
вместо