On 23 January 2012 18:39, Brendan Eich <[email protected]> wrote:
>Andreas Rossberg <mailto:[email protected]>
>> In other words, the current behaviour breaks both scoping and objects
>> semantics.
>
> Non-strict or really pre-strict implementations broke scoping semantics --
> no temporal dead zone. Whether we can retroactively force the new semantics
> on any JS that worked with the old scoping semantics remains to be seen.
>
> Object semantics, I think you misread the alert output. Or did I?

Big oops, you are right. How embarrassing! I apologize to Gavin for
misrepresenting!

The scoping issue remains, though. Existing implementations are
seriously broken there. For example, for some compatibility reasons,
V8 currently allows

  var w = 1; w = 2; print(w); const w = 3

which will output 2. The idea most likely was that const should behave
like var. This, and other, similar examples clearly have to break if
should const become official in classic mode, so the compatibility
argument may not carry far.

> This is future-hostile to guards, or really, we kick the can down the road a
> bit and evangelize strict mode. If and when we add guards, we can either
> break scoping semantics backward compatibility, or require strict opt in.

Doesn't sound pleasant to me... :(

/Andreas
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to