function hoisting like var

Richard Cornford Richard at
Sun Jul 27 17:52:12 PDT 2008

Ingvar von Schoultz wrote:
> Igor Bukanov wrote:
>> 2008/7/28 Ingvar von Schoultz wrote:
>>>> Any of this can be a valid ES3 code as [] always means an
>>>> array literal.
>>> I get the impression that disambiguation would be easy.
>> eval('[]') is a valid and, in fact, useful ES3 code. Similarly
>> eval('{[]}').
> Yes, and by my rules they both create and return a new, empty
> array, which is intuitively expected and compatible.

Are you saying that a block then may never be empty as a syntax
rule? ES 3 blocks are allowed to be empty and I bet there are
examples where blocks contain nothing but an IE/JScript
conditional comment and so are going to be interpreted as
being empty by other ES 3 implementations. (Comments are
allowed inside array literal definitions at present).
> When I said that an array is a comma-separated list of values,
> the fact that I left out the empty and the single-value cases
> didn't mean that they should be seen as blocks! I just didn't
> want to write a lengthy, exhaustive full grammar...


- is a valid ES 3 Program (even if a pointless one); A Block
statement containing an Expression statement (with automatic
semi-colon insertion making the Expression statement
into - 1,2,3,4,5; -).

eval('{1,2,3,4,5}') - results in the value 5, while -
eval('[1,2,3,4,5]') - returns a 5 element array.

More information about the Es4-discuss mailing list