Benjamin (Inglor) Gruenbaum (2014-01-08T23:37:41.000Z)
domenic at domenicdenicola.com (2014-01-14T17:53:45.545Z)
I've recently run into this question in Stack Overflow: http://stackoverflow.com/q/21008329/1348195 ``` function f() { f = eval("" + f); console.log("Inside a call to f(), f is: \n%s", f);} f(); console.log("After a call to f(), f is: \n%s", f); ``` What should the output of the following be? I expected `undefined` on both but that's because I'm used to strict mode. IE/Chrome treat this differently from Firefox and to be honest when I checked the spec it boiled down to which context is affected here. In IE/Chrome the eval is creating `f` inside the context of `f` acting like a function declaration inside. In Firefox it's acting like it's running in the global context. Which is correct? I've tried to follow 10.4.2 (or 18.2.1 in the ES6 draft which is nice) but I still couldn't figure out what "if there is no calling context means".