如何在函数参数中传递Number的空值?

时间:2012-10-09 22:31:45

标签: actionscript-3

我有一个函数,我想为参数传递null,以便获取默认的参数值,但它似乎不喜欢null,undefined或NaN。

这是我的功能:

function myFunction(value:Number = .5, value2:Number = .6):Number {
   return value;
}

然后再说:

var result = myFunction(null, 10);
trace(result); // 0

var result = myFunction(NaN, 10);
trace(result); // NaN

var result = myFunction(undefined, 10);
trace(result); // NaN

如何将其默认为.5?

3 个答案:

答案 0 :(得分:2)

如果在不传递参数的情况下调用函数,则应该按预期获得默认值。在您的示例中,仅在未传递值时才使用默认值。

function myFunction(value:Number = .5, value2:Number = .6):Number {
   return value;
}

var result = myFunction();
trace( result ) // 0.5

如果您想要传递第二个参数而不是第一个参数,那么您可能需要考虑另一种方法。

在AS3中键入'Number'的Vars不能为null,并且会自动转换为NaN。

答案 1 :(得分:1)

基本上,您所做的是Function Overloading,并且在AS3中支持
但是,您可以使用通配符类型模仿重载。

function myFunction(value:*= .5, value2:Number = .6):Number {
   return value;
}

但您的默认值可能不会被分配/访问 我强烈建议你重新设计这个,因为它有代码味道写在它上面,并会在以后回来困扰你。

答案 2 :(得分:-1)

function myFunction(value:Number = .5, value2:Number = .6):Number
{
    if (isNaN(value)) value = .5;
    return value;
}

var result = myFunction(NaN,10);
trace(result); //0.5

你到底想要做什么?当然必须有更好的方法。