编辑示例。我想问题就在这里,但无法理解:
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
为什么我在后一种情况下得到输出未定义? 感谢
答案 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);