Brendan Eich (2013-11-27T01:21:38.000Z)
Jason Orendorff wrote:
> As long as
> it's impossible to have code that parses in both modes, with different
> meanings, it's not so bad.

Then we could have trouble, but perhaps do not:

function f(a = arguments[0] = 42) {
   "use strict";
   ...
}

The "use strict" defeats arguments aliasing at runtime. Of course 
nothing differs in static semantics here, so this is actually easier to 
deal with than recasting lambdas in defaults as strict functions, e.g. 
The arguments object's semantic differences are entirely runtime 
semantic diffs.

Still, it's bothersome. We need to enforce the subset relationships 
you've identified: ES5 strict < ES6, and no static semantic deviations 
down the road. Summoning Mark along with Allen.

/be
domenic at domenicdenicola.com (2013-12-10T01:23:52.686Z)
Jason Orendorff wrote:
> As long as
> it's impossible to have code that parses in both modes, with different
> meanings, it's not so bad.

Then we could have trouble, but perhaps do not:

```js
function f(a = arguments[0] = 42) {
   "use strict";
   ...
}
```

The "use strict" defeats arguments aliasing at runtime. Of course 
nothing differs in static semantics here, so this is actually easier to 
deal with than recasting lambdas in defaults as strict functions, e.g. 
The arguments object's semantic differences are entirely runtime 
semantic diffs.

Still, it's bothersome. We need to enforce the subset relationships 
you've identified: ES5 strict < ES6, and no static semantic deviations 
down the road. Summoning Mark along with Allen.