This content originally appeared on DEV Community and was authored by Sooraj S
What's the output ?
for (var i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 1);
}
for (let i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 1);
}
- A:
0 1 2and0 1 2 - B:
0 1 2and3 3 3 - C:
3 3 3and0 1 2
Answer: C
Because of the event queue in JavaScript, the setTimeout callback function is called after the loop has been executed. Since the variable i in the first loop was declared using the var keyword, this value was global. During the loop, we incremented the value of i by 1 each time, using the unary operator ++. By the time the setTimeout callback function was invoked, i was equal to 3 in the first example.
In the second loop, the variable i was declared using the let keyword: variables declared with the let (and const) keyword are block-scoped (a block is anything between { }). During each iteration, i will have a new value, and each value is scoped inside the loop.
This content originally appeared on DEV Community and was authored by Sooraj S
Sooraj S | Sciencx (2021-07-13T04:09:15+00:00) JavaScript Question #Day 2. Retrieved from https://www.scien.cx/2021/07/13/javascript-question-day-2/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.