也就是说,如果我使用当前时间作为数组的索引:
array[Date.getTime()] = value;
解释器会实例化从0到现在的所有元素吗?不同的浏览器有不同的做法吗?
我记得 AIX 中曾经有一个错误内核,它会根据要求创建伪 ttys,但是如果你这样做了,比如说,“echo >/dev/pty10000000000”,它会创建/dev/pty0、/dev/pty1,.... 然后倒下死了。在贸易展上很有趣,但我不希望这种情况发生在我的客户身上。
最佳答案
是的,他们是。它们实际上是内部哈希表,因此您不仅可以使用大整数,还可以使用字符串、 float 或其他对象。所有键都通过 toString()
转换为字符串在被添加到哈希之前。您可以使用一些测试代码来确认这一点:
<script>
var array = [];
array[0] = "zero";
array[new Date().getTime()] = "now";
array[3.14] = "pi";
for (var i in array) {
alert("array["+i+"] = " + array[i] + ", typeof("+i+") == " + typeof(i));
}
</script>
显示:
array[0] = zero, typeof(0) == string
array[1254503972355] = now, typeof(1254503972355) == string
array[3.14] = pi, typeof(3.14) == string
注意我是如何使用 for...in
的语法,它只为您提供实际定义的索引。如果使用更常见的 for (var i = 0; i < array.length; ++i)
风格的迭代,那么你显然会遇到非标准数组索引的问题。
关于javascript - Javascript 数组是稀疏的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1510778/