DEV Community

Cover image for Javascript Questions
Esraa Refaat
Esraa Refaat

Posted on

Javascript Questions

đź’ˇ 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 2 and 0 1 2
B: 0 1 2 and 3 3 3
C: 3 3 3 and 0 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.

Top comments (3)

Collapse
 
acamara2016 profile image
Adama Camara

I'm seeing these question being the one asked the most in js interviews.

Collapse
 
marks7e profile image
Marcos Barrera

This is some tricky!
Thanks for share it!

Collapse
 
esraarefaat profile image
Esraa Refaat

Thanks