微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

原文地址:https://www.jb51.cc/js/156248.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐