Why do I get a different output when using a do/while loop in the code below?
function logNum() {
let counter = 0;
do {
counter += 1;
setTimeout(() => console.log(counter), counter * 1000);
} while(counter <= 10);
}
logNum();
The above code outputs number 11 ten times. Expected output was numbers 1 to 10. But when I use a for loop, it works as expected as shown below. Why?
function logNum() {
for (let counter = 1; counter <= 10; counter += 1) {
setTimeout(() => console.log(counter), counter * 1000);
}
}
logNum();
Updated working code from example 1:
function logNum() {
let counter = 0;
do {
let num;
counter += 1;
num = counter;
setTimeout(() => console.log(num), num * 1000);
} while(counter < 10);
}
logNum();