Run the body before checking the condition.

do-while-loop A `do...while` loop always executes its body at least once, then checks whether another iteration should run.

Do While Loops

target
do_while_loop.js
Replay: real traced execution (multi-file project)
const target = 3;
let current = 0;
let passes = 0;
do {
  current += 1;
  passes += 1;
} while (current < target);

console.log("target=" + target);
console.log("current=" + current);
console.log("passes=" + passes);
const target = 0;
let current = 0;
let passes = 0;
do {
  current += 1;
  passes += 1;
} while (current < target);

console.log("target=" + target);
console.log("current=" + current);
console.log("passes=" + passes);
const target = 5;
let current = 0;
let passes = 0;
do {
  current += 1;
  passes += 1;
} while (current < target);

console.log("target=" + target);
console.log("current=" + current);
console.log("passes=" + passes);
  1. target ← 3, current ← 0, passes ← 0

    1const target→ 3 = 3; //@target=0, 52let current→ 0 = 0;3let passes→ 0 = 0;4do {
  2. current ← 1, passes ← 1

    pass 1 of 3
    2let current = 0;3let passes = 0;4do {5  current += 1;6  passes += 1;7} while (current < target);
    values this step1current1passes
    All 3 passes — pass 1 is the card above
    passcurrentpasses
    111
    222
    333
  3. console.log("target=" + target);

    6  passes += 1;7} while (current < target);89console.log("target=" + target3);10console.log("current=" + current3);11console.log("passes=" + passes3);
    outputtarget=3
    current=3
    passes=3
  1. target ← 0, current ← 0, passes ← 0

    1const target→ 0 = 0;2let current→ 0 = 0;3let passes→ 0 = 0;4do {
  2. current ← 1, passes ← 1

    2let current = 0;3let passes = 0;4do {5  current += 1;6  passes += 1;7} while (current < target);
    values this step1current1passes
  3. console.log("target=" + target);

    6  passes += 1;7} while (current < target);89console.log("target=" + target0);10console.log("current=" + current1);11console.log("passes=" + passes1);
    outputtarget=0
    current=1
    passes=1
  1. target ← 5, current ← 0, passes ← 0

    1const target→ 5 = 5;2let current→ 0 = 0;3let passes→ 0 = 0;4do {
  2. current ← 1, passes ← 1

    pass 1 of 5
    2let current = 0;3let passes = 0;4do {5  current += 1;6  passes += 1;7} while (current < target);
    values this step1current1passes
    All 5 passes — pass 1 is the card above
    passcurrentpasses
    111
    222
    333
    444
    555
  3. console.log("target=" + target);

    6  passes += 1;7} while (current < target);89console.log("target=" + target5);10console.log("current=" + current5);11console.log("passes=" + passes5);
    outputtarget=5
    current=5
    passes=5