在PHP中,如果你这样做如何防止在Javascript中创建额外的数组元素?
$var = array();
$var[5000] = 1;
echo count($var);
它打印1.
在JS这让 “丢失” 的元素。
<script type="text/javascript">
var fred = [];
fred[10] = 1;
alert(fred.length);
</script>
警报“11”。
我可以预防吗?对任何事物都有好处吗?我是一个试图适应Javascript的PHP编码器。
编辑:
我正在使用谷歌地图V2和markerManager的应用程序。代码已经运行了很长时间,但Chrome(17.0.963.56米)突然出现一个问题,即标记似乎被复制(或更多),然后渲染移动的标记完全错误,通常会导致浏览器冻结。使用Firebug查看DOM,我在markerManager中的grid_变量下发现了数组中“未定义”元素的碎片。我认为,如果我可以删除这些,我可能会有更多的代码,无论它是否修复了标记问题。谢谢。
感谢(非常快)的答案。它们非常有意义。所以这是一个补充问题....是否有人在Google映射中熟悉MarkerManager?它似乎以我展示的方式制作阵列,导致巨大的内存使用量。或者,也许我错了? – Pete 2012-02-22 17:13:02
添加您的问题作为主要问题的编辑或(甚至更好)为此打开一个新的问题。至少我不知道备用阵列的内存使用情况。 – Sirko 2012-02-22 17:22:01
@Pete数组可能有这样的长度,但通常在浏览器中不使用数组数据结构(与数组数据类型相反)来存储稀疏数组(即,其中有洞的数组 - 您的代码不会实际上创建一个名为'0','1','2','3',...,'9'的属性,所以内存使用不是O(n),其中n是长度。通常情况下,内存使用量为O(n),其中n是类似数组属性的数量(小于或等于该长度)。 – gsnedders 2012-02-22 17:22:07