arguments.callee in Harmony

Brendan Eich brendan at mozilla.com
Fri Sep 25 15:35:31 PDT 2009


On Sep 25, 2009, at 3:22 PM, David Flanagan wrote:

> Charles Jolley wrote:
>> Has anyone considered providing a more explicit way of testing for  
>> this?  Maybe a constant that is defined somewhere.
>
> Strict mode isn't a global on-or-off thing. Some functions can be  
> strict while others aren't.  So you can't capture it in a constant.

Good point -- I was thinking of the useful fact to capture that the  
browser supports strict mode (more below).


>> Anyway, that's what I'm going to do:
>> SC.HAS_STRICT = !(function() { return this;}());
>> :)
>
> If you're testing "does this browser support strict mode" then you'd  
> better test it in an explicitly strict context:
>
> SC.HAS_STRICT = (function() {
>  "use strict";
>   return !(function() { return this; }());
> }());
>
> (Or something like that.  I sure will be happy when there's an  
> implementation to test this stuff against.)

You don't need two levels of functions. I just spaced out on the "use  
strict"; in the anonymous function that returns |this|:

if (! function(){"use strict"; return this;}()) { /* strict mode  
supported by the browser */ }


> Otherwise, what you're testing for is something like "is this code  
> currently running in strict mode" or "was this library loaded under  
> strict mode"?

Thanks for wiping up after me. :-)

/be



More information about the es-discuss mailing list