在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