On Jan 6, 2012, at 12:00 AM, Mark S. Miller wrote:

> On Thu, Jan 5, 2012 at 11:47 PM, Allen Wirfs-Brock <al...@wirfs-brock.com> 
> wrote:
>> 
>>     1) program using only ES3 features and no "use strict";
>> 
>>     2) program using only ES5 strict features and saying "use strict";
>> 
>>     3) program using ES6-only features.
>> 
>> Do these three programs operate in three different modes? If not, do #1 and 
>> #2 operate in the same mode, or do #2 and #3 operate in the same mode?
> 
> It isn't about "modes".  #1 and #2 are ES5 programs and are processed as such 
> (applying/not the appropriately strictness as per ES5) . #3 is an ES6 program 
> is processed as such (including using the strict semantics that are universal 
> to ES6).
> 
> Ok, is there any observable difference between what you would have future 
> browsers do, vs the equivalent mechanisms except that program #2 is 
> categorized as an ES6 program and processed as such?
> 
> If there is no observable difference, good. Then it's only a matter of how we 
> describe an agreed semantics. If there is an observable difference, how is 
> this not three modes?

There should be no observable difference.  But the issue isn't how we described 
the (program) semantics.  It is how we decide which semantics to apply.

The tricky cases are thing like:

function f(a) {
    arguments[0]=2;
    return a
}
print(f(1));  //2 if ES5, 1 if ES6

There is nothing in the source file that implies which specification to apply 
so for backwards computability a browser must default to interpreting such 
program as a ES5 program. Anything syntactically unique to ES5 (eg, use of a 
with statment) or ES6 (eg, use rest or spread) would force one interpretation 
or another

Allen







> 
>  
> -- 
>     Cheers,
>     --MarkM

_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to