Flash数组定义的区别

来源:百度知道 编辑:UC知道 时间:2024/06/05 00:34:10
var arr = new Array();//第一种;
var arr2 = [];//第二种;
var arr3:Array;//第三种;

val_s = "AA,BB,CC";
val_a = ["AA","BB","CC"];

//arr = val_s.split(",");
//arr2 = val_s.split(",");
//arr3 = val_s.split(",");//三种都成功

for (i=0;i<val_a.length; i++)
{
arr[i] = val_a[i];//成功
arr2[i] = val_a[i];//成功
arr3[i] = val_a[i];//失败 返回undefined
}
请教高手三种数组定义的区别,
尤其是为什么使用第三种定义方式赋值时,第一个例子可以,第二个例子却返回未定义?谢谢。
(AS2 Flash 9 环境)
谢谢。
能不能再稍微详细解释下第一种和第二种的区别,只是简写与正式写法吗?

var arr = new Array();//第一种; 定义一个数组,并初始化它为空数组

var arr2 = [];//第二种; 定义一个数组,并给它赋一个空值

var arr3:Array;//第三种; 只是单纯定义一个数组,但不赋值。也就是在内存里只申请一个首地址,但没有定义存储长度。

//arr = val_s.split(",");
//arr2 = val_s.split(",");
//arr3 = val_s.split(",");//三种都成功
前两个不说了,arr3 = val_s.split(",")就是把一个数组赋给了刚才定义的数组,把val_s.split(",");的首地址和存储空间给了arr3,也就是首地址和存储长度都有了,所以是肯定成功的

但是这里:arr3[i] = val_a[i];//失败 返回undefined
arr3本身只是一个首地址,没有任何空间可以存储数据。arr3[i]调取的是这个数组的第i个存储位置,所以肯定是没有任何意义的。

另外,定义数组必须初始化,前两个在定义的同时就已经初始化了,但第三个只是定义 没有初始化,所以不能直接调用它的存储空间。

var arr = new Array();//第一种; 定义一个数组,并初始化它为空数组

var arr2 = [];//第二种; 定义一个数组,并给它赋一个空值

var arr3:Array;//第三种; 只是单纯定义一个数组,但不赋值。也就是在内存里只申请一个首地址,但没有定义存储长度。

//arr = val_s.split(",");
//arr2 = val_s.split(",");
//arr3 = val_s.split(",");//三种都成功
前两个不说了,arr3 = val_s.split(","