Actionscript 3 如何为函数参数中的数字传递空值?

Actionscript 3 如何为函数参数中的数字传递空值?,actionscript-3,Actionscript 3,我有一个函数,我想为参数传递null,这样可以获取默认的param值,但它似乎不喜欢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)

我有一个函数,我想为参数传递null,这样可以获取默认的param值,但它似乎不喜欢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

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

你到底想干什么?当然,必须有一种更好的方法。

如果调用函数时没有传递参数,那么应该得到预期的默认值。在您的示例中,仅当一个值根本没有传递时才使用默认值

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

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

如果你想通过第二个参数而不是第一个参数,那么你可能需要考虑另一个方法。


AS3中键入为“Number”的变量的值不能为null,并将自动转换为NaN。

基本上,您所做的是AS3中不支持的,而这是不受支持的。
但是,可以使用通配符类型模拟重载

function myFunction(value:*= .5, value2:Number = .6):Number {
   return value;
}
但您的默认值可能无法分配/访问。

但我强烈建议你重新设计它,因为它到处都是代码味道,以后会再次困扰你。

有没有一种等价物,可以被C#称为Nullable的类型,比如数字?我不确定。我在AS3中没有听说过。我不知道关于actionscript的第一件事,但无论如何:如果您通过名称传递值会发生什么:var result=myFunction(value2:10);省略值?AS3不支持这个,但它会非常好。可选参数基本上是调用函数的语法糖,其中
参数。length
小于
函数。length
。如果您在调用该方法时指定了一个值,那么这就是它的值。最好不要使用可选参数,而是传入一个
options
对象来解决问题<代码>myFunction({value2:10})如果你要拒绝一个答案,至少留下一个原因,我想知道如何为一个方法传递空值,。说有更好的方法不是一个有用的答案,尤其是当为其他类型(除了数字)传递null时。出于某种原因,AS3中没有这样的选项。我很遗憾投了反对票,因为它很有用。不幸的是,锁上了。编辑你的答案,包括“你不能这样做,所以这里有另一个选择”,我将删除否决票。