我测试了以下代码:
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视为非空/非null.
我在这里错过了什么?
任何帮助表示赞赏.问候..
它看起来像aArgs进入bb()函数将是一个空数组,但一个数组一点也不...我会说输出是预期的.虽然我得到了所需的输出,但我不确定如何格式化它...
更新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:
这个线程:用数组填充(... rest)参数?看起来好像很有意义.它使用apply()函数将数组作为参数列表传入. http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/Function.html#apply()
不知道这是否仍然相关,但你可以试试这个:
function aa(...aArgs):void { var myArray:Array = aArgs; bb.apply( this, myArray ); } function bb(...bArgs):void { trace("bb:", bArgs.length); } aa(); //calling aa without any arguments.
基本上Function.apply是你的朋友.