ES4 draft: array initializer expressions

# Lars Hansen (17 years ago)

Enclosed is the first draft of the description of array initializer syntax, which has evolved quite a bit in ES4. The draft feels a little raw, maybe because we have yet to pin down all aspects of how structural array types interact with everything; please read critically and ask difficult questions. (The draft contains an informative section on structural array types as I think they ought to behave.)

# Waldemar Horwat (17 years ago)

My comments:

The grammar is ambiguous.

var [x, y] = expr;

is both an assignment expression statement and a destructuring variable binding statement.

How does the "length" property work for structural type literals? Is it always a fixture?

If the array initializer is prefixed by |const| or |var| then the array properties created will be created as fixtures; if the prefix is |const| those fixtures will additionally be read-only.

Am I to read this as stating that the length is also a constant if "const" is used? It's a bit unclear.

Waldemar
# Jeff Dyer (17 years ago)

'var' and 'const' need to be added to the lookahead set on ExpressionStatement. That will take care of the ambiguity.

# Olav Kjær (17 years ago)

I have a (perhaps stupid) question regarding the Array type syntax. What is the use case for a type like:

[string, double, ...boolean]

I understand the utility of heterogeneous tuples of a fixed size, and of homogeneous lists of variable size, but I don't really see when I would use a hybrid like this. What am I missing?