我有一个函数,我想为参数传递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?
答案 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
你到底想要做什么?当然必须有更好的方法。