Javascript数组在初始化后仅包含undefined,而不是给定的值

Pat*_*ick 6 javascript arrays undefined

我以为我知道如何声明javascript数组但是在这个脚本中我得到undefined了数组中无限循环的元素.

我声明了三个数字数组,其中两个有多个值,另一个有一个值.

我有一个switch语句,它将三个数组之一分配给一个新的变量名 cluster_array

当我运行for循环时cluster_array,我得到一个无限循环和每个元素ifundefined

我错过了什么?

<script type="text/javascript">
    var ga_west_cluster = new Array(10,11,12,14,74,75,76,77,78,79,80,81,82,83,85,86,87,88,89,90,91,92,295,296);

// original bad array
    var ga_east_cluster = new Array(84);
// added an extra (dummy) value and it works fine   
    var ga_east_cluster = new Array(1,84);
    var sc_cluster      = new Array(93,94,95,96,97,98,99,100,101,102,103);
</script>
Run Code Online (Sandbox Code Playgroud)

这是alert文字:

var test_message        = "cluster data\n";
    for(var k=0;k<cluster_array.length;k++)
        test_message    += "value: "+cluster_array[k]+"\n";
Run Code Online (Sandbox Code Playgroud)

测试警报框

Poi*_*nty 14

不要像这样初始化数组.总是这样做:

var myarray = [value, value, value, ... ];
Run Code Online (Sandbox Code Playgroud)

"Array()"构造函数设计得非常糟糕.当参数是数字时,单参数形式被解释为使用那么多"空"值"初始化"数组的请求.这是一个毫无意义的事情,所以一般来说,使用数组常量表示法会更好(如上例所示).

它似乎并没有在现代浏览器不再发生,但我发誓,有一段时间,至少某些浏览器实际上为单参数的构造函数,这是不是真的有用的,但危险的代码分配内存,可能会意外传递一个非常大的数字.