A random collection of ES4 draft spec surprises and thoughts

Maciej Stachowiak mjs at apple.com
Mon May 26 23:40:59 PDT 2008

On May 26, 2008, at 11:58 AM, Jason Orendorff wrote:

> I can answer two more :)
> On Mon, May 26, 2008 at 1:06 PM, Mark S. Miller <erights at google.com>  
> wrote:
>> * What does the "var" attribute mean inside an object literal?
> See Lars's "ES4 stable draft: Object initializers":
>  https://mail.mozilla.org/pipermail/es4-discuss/2008-April/002668.html
>> * Why does the grammar allow function calls in
>> LeftHandSideExpressions. For example, what's the meaning of
>>   foo(a)++
>> ?
> As far as I know, this is unchanged from ES3, in which "functions are
> permitted to return References" but "This possibility is admitted
> purely for the sake of host objects. No built-in ECMAScript function
> defined by this specification returns a reference and there is no
> provision for a user-defined function to return a reference.":
>  http://bclary.com/2004/11/07/#a-8.7
> and an implementation that doesn't hold with such nonsense is also
> allowed to reject "foo(a)++" as a syntax error:
>  http://bclary.com/2004/11/07/#a-16

In practice, for Web compatibility, it has to be a runtime error not a  
parse error. I don't know of any implementation making use of a  
function returning a reference however (in WebKit's implementation  
Reference is not a real type, just a spec fiction, and I assume this  
is true in other implementations).

  - Maciej

More information about the Es4-discuss mailing list