Caitlin Potter (2014-12-18T16:50:47.000Z)
> On Dec 18, 2014, at 10:54 AM, Mark S. Miller <erights at google.com> wrote:
> 
> 
> 
> On Thu, Dec 18, 2014 at 4:46 AM, Alex Kocharin <alex at kocharin.ru <mailto:alex at kocharin.ru>> wrote:
>  
>  
> 16.12.2014, 17:04, "Andrea Giammarchi" <andrea.giammarchi at gmail.com <mailto:andrea.giammarchi at gmail.com>>:
>> 
>> 
>> On Tue, Dec 16, 2014 at 1:50 PM, Felipe Nascimento de Moura <felipenmoura at gmail.com <mailto:felipenmoura at gmail.com>> wrote:
>>  
>> function () {
>>     use strict, safe;
>> }
>>  
>> This could allow us to even add some extra scoped-options, such as a safe mode..
>>  
>>  
>> I'm quite sure we've discussed already other directives and the unanimous answer here was "NO, 'use strict' is already problematic"
>>  
>  
> It's problematic mostly because it can't be turned off when it's needed.
> 
> When is this needed?
> 

It would be nice for testing (engines and applications), at any rate.

If you have similar behaviour for strict and non-strict modes:

```
[true, false].forEach(function someUnitTest(scopeMode) {
  Reflect.setStrictMode(scopeMode);

  assertEquals(“quantum puppies”, doTheThing());
});
```

vs

```
(function someUnitTestStrictMode() {
  “use strict”;
  assertEquals(“quantum puppies”, doTheThing());
})();

(function someUnitTestSlappyMode() {
  assertEquals(“quantum puppies”, doTheThing());
})();
```

>  
> So another directive like "use nostrict" would be welcome imho. Especially in modules when "strict" is on by default.
> 
> 
>     //... strict context
>     (1,eval)("...sloppy code...");
>     //... strict context

eval has other implications, so it doesn’t always accomplish what you want :( Plus, the contents are a lot harder to read in most text editors ;)

>  
>  
> I think we should either deprecate one of the modes, or officially support multiple modes and provide a method to switch between them.
> 
> Feel free to consider sloppy mode deprecated. I do.

Well sure, but unfortunately it’s not going to just disappear :(

>  
>  
> 
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org <mailto:es-discuss at mozilla.org>
> https://mail.mozilla.org/listinfo/es-discuss <https://mail.mozilla.org/listinfo/es-discuss>
> 
> 
> 
> -- 
>     Cheers,
>     --MarkM
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20141218/d8d9c999/attachment-0001.html>
d at domenic.me (2015-01-05T20:39:00.418Z)
On Dec 18, 2014, at 10:54 AM, Mark S. Miller <erights at google.com> wrote:

> When is this needed?

It would be nice for testing (engines and applications), at any rate.

If you have similar behaviour for strict and non-strict modes:

```
[true, false].forEach(function someUnitTest(scopeMode) {
  Reflect.setStrictMode(scopeMode);

  assertEquals(“quantum puppies”, doTheThing());
});
```

vs

```
(function someUnitTestStrictMode() {
  “use strict”;
  assertEquals(“quantum puppies”, doTheThing());
})();

(function someUnitTestSlappyMode() {
  assertEquals(“quantum puppies”, doTheThing());
})();
```


> So another directive like "use nostrict" would be welcome imho. Especially in modules when "strict" is on by default.
> 
> 
>     //... strict context
>     (1,eval)("...sloppy code...");
>     //... strict context

eval has other implications, so it doesn’t always accomplish what you want :( Plus, the contents are a lot harder to read in most text editors ;)

> Feel free to consider sloppy mode deprecated. I do.

Well sure, but unfortunately it’s not going to just disappear :(