0

我有一个函数,我想为参数传递 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

如何让它默认为 0.5?

4

3 回答 3

2

如果你在不传递参数的情况下调用你的函数,你应该得到你期望的默认值。在您的示例中,仅在根本未传递值时才使用默认值。

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

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

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

在 AS3 中键入“数字”的变量不能有 null 值,并且会自动转换为 NaN。

于 2012-10-10T07:24:55.837 回答
1

基本上,您正在做的是功能重载,而AS3支持。
但是,您可以通过使用通配符类型来模拟重载。

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

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

于 2012-10-10T13:08:34.587 回答
-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

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

于 2012-10-09T23:56:42.637 回答