On Sep 12, 2013, at 12:40 PM, Jason Orendorff <jason.orendo...@gmail.com> wrote:

> Just as a worked example, answering Oliver's question about default
> expressions took me the better part of an hour.
> 
> The default-expression h() in code like
> 
>    function f(x=h(), y) {
>        function h() { ... }
>    }
> 
> is evaluated in the scope of f, as I expected, so {x, h, y} are all in
> scope there.
> 
> But I was surprised by the timing; h() is evaluated
> (a) before y is populated with the actual argument value;
> (b) before the arguments object is fully initialized.
> 
> That last surprise seems really unfortunate, since the expression can
> access the arguments object, observing it before and after
> CompleteMapped/StrictArgumentsObject, or even cause those to fail. Can
> we change that?
>From talking to SpiderMonkey folk it sounds like SM nukes the |arguments| 
>identifier entirely if you use any of the new parameter logic (deconstruction, 
>defaults, or rest params).  I would be happy with that.

The spec (from my understanding) says that we can't declare a parameter named 
arguments but does limit reads of it.  Also that doesn't limit declarations of 
a local named arguments 

--Oliver
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to