- From: Boris Zbarsky <bzbarsky@MIT.EDU>
- Date: Wed, 06 Jul 2011 17:33:12 -0400
- To: "Mark S. Miller" <erights@google.com>
- CC: Allen Wirfs-Brock <allen@wirfs-brock.com>, Luke Hoban <lukeh@microsoft.com>, "es5-discuss@mozilla.org" <es5-discuss@mozilla.org>, public-script-coord@w3.org
On 7/6/11 5:22 PM, Mark S. Miller wrote:
> On all the browsers I just tested,
>
> (1,setTimeout)(function(){'use strict'; alert('foo'); }, 0)
>
> alerts 'foo'.
So I suppose from the webidl point of view setTimeout is just a
non-strict function?
> This is true for non-strict-mode code already, right? Or am I
> misunderstanding the problem?
>
> I think you are. For the specified HTML5 behavior, when a setTimeout
> from frame X calls a non-strict callback from frame Y passing undefined
> as the thisArg, it is the non-strict callback's [[Call]] method that
> coerces the thisArg to Y's global object. Nothing requires X's
> setTimeout to be able to figure out what Y's global object is.
Ah, ok.
> Yes, this is the important legacy compat issue. We need to take a cross
> browser survey.
>
> What does the ES5 spec say about that case? (Probably nothing,
> since it assumes a unique global.)
>
>
> Correct. But our intent moving forward is clearly towards a lexical
> understanding of "which global".
Understood.
-Boris
Received on Wednesday, 6 July 2011 21:33:54 UTC