Why is “this” in an anonymous function undefined when using strict?
Why is this in an anonymous function undefined when using javascript in strict mode? I understand why this could make sense, but I couldn't find any concrete answer. Example: (function () { "use strict"; this.foo = "bar"; // *this* is undefined, why? }()); Test in a fiddle: http://jsfiddle.net/Pyr5g/1/ Check out the logger (firebug). It's because, until ECMAscript 262 edition 5, there was a big confusion if people who where using the constructor pattern , forgot to use the new keyword. If you forgot to use new when calling a constructor function in ES3, this referenced the global object (