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

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

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

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

当我通过cluster_array运行for循环时,我得到一个无限循环和每个元素,如果未定义

我错过了什么?

<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>

这是警告文字

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

解决方法

不要像这样初始化数组.总是这样做:
var myarray = [value,value,... ];

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

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

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...