Странное поведение массива - PullRequest
2 голосов
/ 24 ноября 2011

Редактирование примера. Я думаю, что проблема здесь, но не могу понять это:

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

Почему я получаю вывод undefined в последнем случае? Спасибо

Ответы [ 3 ]

4 голосов
/ 24 ноября 2011

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

Array(... values)

Позволяет создать массив, содержащий указанные элементы.

Array(numElements:int = 0)

Позволяет создать массив с указанным количеством элементов.

Вот почему, когда вы определяете

var b:Array = new Array(3);

, он создает массив из четырех элементов.И поскольку в этих элементах не определено значение, вы получите неопределенную ошибку.

3 голосов
/ 24 ноября 2011
new Array(abc) 

должно быть

new Array([abc])

Без [] вы устанавливаете только длину массива.

2 голосов
/ 24 ноября 2011

Итак, расширим ответ Махмута ...

Здесь вы создаете новый массив и определяете его длиной 3 узла, но в данный момент узлы пусты.

var b:Array = new Array(3);

Я полагаю, вы ожидаете, что результат будет трассироваться 3, а не неопределенно.

Таким образом, вы можете добавить пункт «3», как говорит Махмут:

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

или

b.push(3);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...