Loops and Ranges
Loop Accumulators
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
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);
multiplier ← 2, product ← 1
1const multiplier→ 2 = 2; //@multiplier=3, 42let product→ 1 = 1;3for (let i = 1; i <= 4; i += 1) {product ← 2
pass 1 of 41const multiplier = 2; //@multiplier=3, 42let product = 1;3for (let i1 = 1; i <= 4; i += 1) {4 product *= multiplier2;5}values this step2productAll 4 passes — pass 1 is the card above pass iproduct1 1 2 2 2 4 3 3 8 4 4 16 console.log("multiplier=" + multiplier);
4 product *= multiplier;5}67console.log("multiplier=" + multiplier2);8console.log("product=" + product16);outputmultiplier=2 product=16
multiplier ← 3, product ← 1
1const multiplier→ 3 = 3;2let product→ 1 = 1;3for (let i = 1; i <= 4; i += 1) {product ← 3
pass 1 of 41const multiplier = 3;2let product = 1;3for (let i1 = 1; i <= 4; i += 1) {4 product *= multiplier3;5}values this step3productAll 4 passes — pass 1 is the card above pass iproduct1 1 3 2 2 9 3 3 27 4 4 81 console.log("multiplier=" + multiplier);
4 product *= multiplier;5}67console.log("multiplier=" + multiplier3);8console.log("product=" + product81);outputmultiplier=3 product=81
multiplier ← 4, product ← 1
1const multiplier→ 4 = 4;2let product→ 1 = 1;3for (let i = 1; i <= 4; i += 1) {product ← 4
pass 1 of 41const multiplier = 4;2let product = 1;3for (let i1 = 1; i <= 4; i += 1) {4 product *= multiplier4;5}values this step4productAll 4 passes — pass 1 is the card above pass iproduct1 1 4 2 2 16 3 3 64 4 4 256 console.log("multiplier=" + multiplier);
4 product *= multiplier;5}67console.log("multiplier=" + multiplier4);8console.log("product=" + product256);outputmultiplier=4 product=256