disabling "use strict"; everywhere

Andrea Giammarchi andrea.giammarchi at gmail.com
Wed Jan 30 09:34:46 PST 2013


thanks, that makes sense. I have tried this too:

with({}){
  function isStrict() {"use strict";
    return this;
  }
  alert(isStrict()); // global object
}

still global though, but I believe that a side effect of the with statement.

Weird that expressions behave outside that implicit context.

Libraries wrapped in inline expressions seem to be safe then, hooooray I
guess :-)



On Wed, Jan 30, 2013 at 9:18 AM, Andreas Rossberg <rossberg at google.com>wrote:

> On 30 January 2013 18:00, Andrea Giammarchi <andrea.giammarchi at gmail.com>
> wrote:
> > let me rephrase ...
> >
> > putting `with(this){` before any build process/inlined library and `}` at
> > the end of all concatenated files **nothing** is strict anymore ^_^
> >
> > function isStrict() {"use strict";
> >   return this;
> > }
> >
> > isStrict(); // undefined
> >
> > now, wraping the whole thing inside a with statement
> >
> > with(this){
> >   function isStrict() {"use strict";
> >     return this;
> >   }
> >   alert(isStrict()); // global object
> > }
> >
> > forget the Function hack, there is no library able to ensure itself to be
> > executed in strict mode.
> > Using the width statement around any code makes it not strict.
>
> That is, er, balls, of course. All that happens here is that inside
> the 'with', a call to a _toplevel_ function like 'isStrict()' becomes
> 'this.isStrict()', and so receives the global object. That does not
> otherwise change strictness, however. Try:
>
>   with(this) {
>     function isStrict() { "use strict"; var x; delete x; }
>     alert(isStrict());
>   }
>
> for example. Moreover, calls to functions not resolving to global
> definitions are completely unaffected, so are calls using 'call' or
> 'apply':
>
>   with(this) {
>     function isStrict() { "use strict"; return this; };
>     function call(f) { f() };
>     alert(call(isStrict)); // undefined
>     alert(isStrict.call()); // undefined
>  }
>
> Both calls would return window in sloppy mode.
>
> /Andreas
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20130130/2698c246/attachment.html>


More information about the es-discuss mailing list