Axel Rauschmayer wrote:
So, case by case:

* arrow function syntax (which does not imply "use strict" in body prologue)
* class
* const
* default parameters
* destructuring
* rest parameters
* generators (function*, yield in function* body)
* comprehensions
* generator expressions
* module

all seem to work in 1JS via the "new syntax is its own opt-in" rule, including any stricter/saner semantic checking.

I left out 'let' and function-in-block. Let's set those aside for a moment.

Anyone disagree that the bulleted syntactic extensions listed above should be their own opt-in, and think instead that some or others or all should appear only to strict code? (Mark, here's your chance! ;-)

Am I getting the following grouping right? I’d argue that all members of the second category usually have small bodies; having ES6 syntax only there might make things too fragmented.

(1) opt-in for bodies:
* class
* default parameters
* rest parameters
* destructuring (parameters?)
* generators (function*, yield in function* body)
* module
Right so far.

(2) opt-in for surrounding scope:
* arrow function syntax (which does not imply "use strict" in body prologue)

No, there's no reason for such opt-in given 1JS's "new syntax is its own opt-in selector". If somewhere else, 3000 lines down, you need a comprehension, use it then. No need for the arrow here to enable the comprehension there, or vice versa. No enabling outside of the syntax-that-enables-itself.

* const

Already reserved (in some sense, even if equated to var in Opera), no opt-in required. This identifier was reserved in ES1.

* comprehensions

Same as arrows, no surrounding scope taint and no need for it.

* generator expressions

Ditto.

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

Reply via email to