Since the global execution context will be popped out of the call stack after executing line number 2 and after 4 seconds if we examine the call stack we will have the execution context of the callback function alone which is dumped by setTimeout function.
So , how is it that still we are able to access "this.y" inside this function? Isnt it the fact that at line number 3 "this" points to the global execution context which will be out of scope by that time?
line 1: var y= 20;
line 2: setTimeout(function() {
line 3: console.log(this.y);
}, 4000);