Array的奇怪行为

时间:2011-11-24 07:02:16

标签: flash actionscript-3 actionscript

编辑示例。我想问题就在这里,但无法理解:

var aa:Number = 3
var a:Array = new Array (3,2) ;
var b:Array = new Array(3); 
fun(a) ;
fun(b);


function fun(c:Object)
{
trace(c[0]);   

}

//output
// 3
// undefined

为什么我在后一种情况下得到输出未定义? 感谢

3 个答案:

答案 0 :(得分:4)

来自http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Array.html

Array(... values)

允许您创建包含指定元素的数组。

Array(numElements:int = 0)

允许您创建指定数量元素的数组。

这就是你定义

时的原因
var b:Array = new Array(3);

它创建了一个包含四个元素的数组。由于这些元素中没有定义值,因此会出现未定义的错误。

答案 1 :(得分:3)

new Array(abc) 

应该是

new Array([abc])

如果没有[],则只设置数组的长度。

答案 2 :(得分:2)

所以要扩展Mahmut的答案......

在这里,您创建一个新数组并使用3个节点的长度定义它,但此时节点是空的。

var b:Array = new Array(3);

我相信你期望输出跟踪3而不是未定义。

所以你可以像Mahmut一样添加项目“3”:

var b:Array = new Array([3]);

b.push(3);