Build up a value one iteration at a time.

loop-accumulator An accumulator starts with an initial value and changes during each loop pass.

Loop Accumulators

multiplier
loop_accumulator.js
Replay: real traced execution (multi-file project)
const multiplier = 2;
let product = 1;
for (let i = 1; i <= 4; i += 1) {
  product *= multiplier;
}

console.log("multiplier=" + multiplier);
console.log("product=" + product);
const multiplier = 3;
let product = 1;
for (let i = 1; i <= 4; i += 1) {
  product *= multiplier;
}

console.log("multiplier=" + multiplier);
console.log("product=" + product);
const multiplier = 4;
let product = 1;
for (let i = 1; i <= 4; i += 1) {
  product *= multiplier;
}

console.log("multiplier=" + multiplier);
console.log("product=" + product);
  1. multiplier ← 2, product ← 1

    1const multiplier→ 2 = 2; //@multiplier=3, 42let product→ 1 = 1;3for (let i = 1; i <= 4; i += 1) {
  2. product ← 2

    pass 1 of 4
    1const multiplier = 2; //@multiplier=3, 42let product = 1;3for (let i1 = 1; i <= 4; i += 1) {4  product *= multiplier2;5}
    values this step2product
    All 4 passes — pass 1 is the card above
    passiproduct
    112
    224
    338
    4416
  3. console.log("multiplier=" + multiplier);

    4  product *= multiplier;5}67console.log("multiplier=" + multiplier2);8console.log("product=" + product16);
    outputmultiplier=2
    product=16
  1. multiplier ← 3, product ← 1

    1const multiplier→ 3 = 3;2let product→ 1 = 1;3for (let i = 1; i <= 4; i += 1) {
  2. product ← 3

    pass 1 of 4
    1const multiplier = 3;2let product = 1;3for (let i1 = 1; i <= 4; i += 1) {4  product *= multiplier3;5}
    values this step3product
    All 4 passes — pass 1 is the card above
    passiproduct
    113
    229
    3327
    4481
  3. console.log("multiplier=" + multiplier);

    4  product *= multiplier;5}67console.log("multiplier=" + multiplier3);8console.log("product=" + product81);
    outputmultiplier=3
    product=81
  1. multiplier ← 4, product ← 1

    1const multiplier→ 4 = 4;2let product→ 1 = 1;3for (let i = 1; i <= 4; i += 1) {
  2. product ← 4

    pass 1 of 4
    1const multiplier = 4;2let product = 1;3for (let i1 = 1; i <= 4; i += 1) {4  product *= multiplier4;5}
    values this step4product
    All 4 passes — pass 1 is the card above
    passiproduct
    114
    2216
    3364
    44256
  3. console.log("multiplier=" + multiplier);

    4  product *= multiplier;5}67console.log("multiplier=" + multiplier4);8console.log("product=" + product256);
    outputmultiplier=4
    product=256