我已经测试了以下代码:

function aa(...aArgs):void
{
    trace("aa:", aArgs.length);
    bb(aArgs);
}
function bb(...bArgs):void
{
    trace("bb:", bArgs.length);
}
aa(); //calling aa without any arguments.


输出为:

aa: 0 //this is expected.
bb: 1 //this is not!


当我将空参数(aArgs)传递给bb函数时;
它不应该返回0长度吗?似乎函数bb将传递的aArgs视为非空/非空。

我在这里想念什么?

任何帮助表示赞赏。
问候..

最佳答案

看起来去bb()函数的aArgs将会是一个空数组,但仍然是一个数组...我要说的是输出是可以预期的。我不是很确定我该如何格式化以获得所需的输出...

更新1:

我想澄清一下。您所拥有的基本上与以下内容相同:

function aa(...aArgs):void
{
    myArray:Array = aArgs;
    bb(myArray);
}
function bb(...bArgs):void
{
    trace("bb:", bArgs.length);
}
aa(); //calling aa without any arguments.


如果看到此代码,您会期望bb:1是吗?

更新2:

该线程:filling in (...rest) parameters with an array?看起来像是相关的。它使用apply()函数将数组作为参数列表传递。 http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/Function.html#apply()

关于actionscript-3 - AS3…(静止)参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/971475/

10-13 05:17