Brendan Eich brendan at
Sun Mar 18 15:45:49 PDT 2007

The bug fix is clearly talking only about making arguments objects  
delegate to Array.prototype. It's not talking about new syntax to  
allow holes in actual parameter lists.

Note also how arguments' type may not be Array, but something  
delegating to Array.prototype. We need to finalize the spec, but  
already ES1-3 makes arguments a magic type that aliases arguments[0]  
to a in function f(a){...}. That's not something Array instances can  
do, and implementations take advantage of the fact that arguments  
appears to be an Object with magic native getter and setter behavior.  
Making arguments an Array would mean mixing in the magic, somehow. So  
when I wrote that bug fix originally, I intentionally described the  
fix as making the arguments object delegate to Array.prototype.

Holes in actual parameter lists are something I've never heard  
requested, and people already "remember" how to pass parameters in  
any C-like language. The issue is whether novices somehow might be  
confused by the ability to write [1, , 3] but not f(1, , 3). I doubt  
anyone would be much confused.


More information about the Es4-discuss mailing list