考慮下面的代碼:的Javascript發出用於循環
function splicer()
{
var arrayElements = ["elem1","elem2","elem3","elem4"];
for(var index in arrayElements)
{
arrayElements.splice(index,1);
}
alert("Elements: "+arrayElements);
}
上述功能應該刪除所有來自陣列"arrayElements"
的元素。但它不會。
Javascript引擎維護"index"
,因爲它不介意被修改的數組。 人們可能期望像"for each"
循環,沒有這種問題
即使下面的代碼似乎並沒有工作:
function splicer()
{
...
for(var index in arrayElements)
{
arrayElements.splice(index--,1);
}
...
}
改變變量「指標」的價值,即使似乎沒有工作。 更改後的值可在「for(...){...}」塊中使用,但當循環到達下一次迭代時,值將重置並從下一個索引繼續作爲發條。
這樣看來這樣的代碼可能是唯一的解決辦法:
function splicer()
{
var arrayElements = ["elem1","elem2","elem3","elem4"];
for(var index=0;index<arrayElements.length;index++)
{
arrayElements.splice(index--,1);
}
alert("Elements: "+arrayElements);
}
測試中:火狐16 Beta版。
但將一元運算符一"splice()"
方法中,初看似乎被誤導。
這可能是值得考慮的或任何它可能涉及,以便他們提出一個很好的解決方案。
http://stackoverflow.com/questions/500504/javascript-for-in-with-arrays的可能的複製 –