On Sun, Dec 23, 2012 at 11:32 AM, Erik de Bruin <e...@ixsoftware.nl> wrote:

> My personal preference for optional arguments goes to:
>
> optArg = optArg !== 'undefined' ? optArg : defaultValue;
>

Hi Erik,

the way we implement this should not change ActionScript language
semantics. Sorry, but this is not a question of personal preference.
As explained in detail in this blog
post<http://blog.jangaroo.net/2012/01/simulating-actionscript-parameter.html>,
ActionScript does *not* replace undefined parameters by their default
values, but it only uses the default values when less actual parameters are
given in the call. Thus, the generated code has to check arguments.length.
The blog post discusses some optimizations (performance, code size), but if
you want a solution that is easy to generate (one default parameter => one
line of generated code) *and* leads to the correct semantics, please use

  if (arguments.length < optArgIndex) optArg = defaultValue;

I'm a big fan of ?: expressions, but in this case, an if-statement is
clearly the better choice, as "else", the parameter value should stay as-is
(and not be assigned to itself).
Optimization: When there are multiple optional arguments, it is obvious
that the corresponding if-statements should be sorted by decreasing
argument index and then nested, because it is obsolete to check for
arguments.length
< 4 if you already know that arguments.length < 3. But I agree that we can
add this optimization later. I just would like to see us get the
*semantics*right in the first go.

Greetings
-Frank-

Reply via email to