Javascript For循环问题

Nok*_*eak 5 javascript arrays foreach for-loop

请考虑以下代码:

function splicer()
{
 var arrayElements = ["elem1","elem2","elem3","elem4"];
 for(var index in arrayElements)
 {
  arrayElements.splice(index,1);
 }
 alert("Elements: "+arrayElements);
}
Run Code Online (Sandbox Code Playgroud)

上述函数应该从数组中删除所有元素"arrayElements".但事实并非如此.

Javascript引擎保持"index"原样并且不介意被修改的数组.人们可能会期待像"for each"循环那样没有这种问题的东西

即使以下代码似乎不起作用:

function splicer()
{
...
 for(var index in arrayElements)
 {
  arrayElements.splice(index--,1);
 }
...
}
Run Code Online (Sandbox Code Playgroud)

即使改变变量"索引"的值似乎也不起作用.更改的值在"for(...){...}"块内可用,但是,当循环到达下一次迭代时,该值将重置并从下一个索引继续作为发条.

所以似乎这样的代码可能是唯一的解决方案:

function splicer()
{
 var arrayElements = ["elem1","elem2","elem3","elem4"];
 for(var index=0;index<arrayElements.length;index++)
 {
  arrayElements.splice(index--,1);
 }
 alert("Elements: "+arrayElements);
}
Run Code Online (Sandbox Code Playgroud)

测试:Firefox 16 Beta.

但是在一个"splice()"方法中放置一元运算符似乎一见钟情.

这可能值得考虑到"W3C"它可能关注的人或任何人,以便他们提出一个很好的解决方案.