const formal parameters?

Mark S. Miller erights at
Thu Jun 19 16:07:46 PDT 2008

As previously mentioned, we've decided to allow "const" variable
declarations into ES3.1 under the "parses on 3/4 browser rule"
(FF,Safari,Opera) since it also aids integrity. However, it's a bit
mysterious how to declare formal parameter variables to be const in a
way that'll parse on 3/4 browsers. Both Firefox and Safari reject

    function foo(x, const y) { return [x, y];}

as a syntax error. However, they both accept

    function foo(x, y) { var y; return [x, y];}

and they correctly do not  treat the "var x;" as shadowing the "x"
parameter variable. So I thought I'd try

    function foo(x, y) { const y; return [x, y];}

On FF under squarefree this gives a "TypeError on line 1:
redeclaration of formal parameter y". On Safari it parses fine, but of
course that the const-ness is not yet enforced.  Would ES4 interpret
the above syntax as declaring the "y" parameter variable to be const?
If so, what immediate plans do FF and Opera have re this syntax? If
both expect this to parse soon, perhaps we should stretch our 3/4 rule
and permit it? If not, any other suggestions for declaring formal
parameter variables to be const in ES3.1?


More information about the Es4-discuss mailing list