Frank,

In what way can the the type of an argument be 'undefined' other than
if that argument is NOT PASSED?

<code>
    function func(optArg) {
       optArg = typeof optArg !== 'undefined' ? optArg : "yes";

       return "Use default: " + optArg;
    }
    func("no"); // Use default: no
    func(); // Use default: yes
</code>

EdB

On Thu, Dec 27, 2012 at 11:07 AM, Frank Wienberg <fr...@jangaroo.net> wrote:
> 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-



-- 
Ix Multimedia Software

Jan Luykenstraat 27
3521 VB Utrecht

T. 06-51952295
I. www.ixsoftware.nl

Reply via email to