編輯示例。我想問題是在這裏,但不明白它:Array的奇怪行爲
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
爲什麼我得到的輸出未定義在後一種情況下? 由於
編輯示例。我想問題是在這裏,但不明白它:Array的奇怪行爲
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
爲什麼我得到的輸出未定義在後一種情況下? 由於
從http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Array.html
Array(... values)
允許創建包含指定數組元素。
Array(numElements:int = 0)
允許您創建指定數量元素的數組。
這就是爲什麼當你定義
var b:Array = new Array(3);
它創建四個元素的數組。由於這些元素中沒有定義任何值,因此會出現未定義的錯誤。
new Array(abc)
應該是
new Array([abc])
沒有[]只設置陣列的長度。
所以對馬合木提的回答擴大...
在這裏,您創建一個新的數組,並用3個節點的長度來定義它,但在目前的節點是空的。
var b:Array = new Array(3);
我相信你期待輸出跟蹤3而不是未定義。
所以,你可以添加項目 「3」 像馬合木提說:
var b:Array = new Array([3]);
或
b.push(3);