"use strict" VS setTimeout

Andrea Giammarchi andrea.giammarchi at gmail.com
Sun Sep 7 12:32:33 PDT 2014

this is getting nowhere ... yeah Garret, you can use `.call` and we all
know that ...

Now I want you to answer this: why on earth would you expect a global
context in a setTimeout or setInterval operation for a function/method you
have explicitly defined as strict ?

One single use case ... do you have it ?

'cause you don't use "use strict" inside method/functions passed to
`addEventListener` as example, do you?

So I will close the loop with the very initial snippet and just one extra

(function () {
  'use strict'; // <== as a developer, I don't want implicit window
  setTimeout(function () {
    'use strict'; // <== as a developer, I don't want implicit window
    // [window/global Object]
  }, 0);

Best Regards

On Sun, Sep 7, 2014 at 8:28 PM, Garrett Smith <dhtmlkitchen at gmail.com>

> On 9/7/14, Andrea Giammarchi <andrea.giammarchi at gmail.com> wrote:
> > **implicitly fail** from a user point of view that used "use strict" to
> > avoid receiving the global context in there ... I am not sure how much
> you
> > want to turn it back to me but you are missing the point and I've not
> much
> > else to say.
> >
> "use strict" doesn't avoid receiving the global object.
> For function calls in strict code, "use strict" says the `this` value
> is supplied by the caller, but if it isn't, the `this` value is
> undefined.
> The caller of the callback your example below was setTimeout. Method
> setTimeout maintains a reference to the window and calls callback
> function, `a`, with the window as the thisValue.
> setTimeout(
>   function a() {
>     console.log(this);
>   },
> 1);
> --
> Garrett
> @xkit
> ChordCycles.com
> garretts.github.io
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20140907/05593b97/attachment.html>

More information about the es-discuss mailing list