什么是....在javascript语句中

dra*_*sea 3 javascript for-in-loop

任何人都可以在javascript中解释如何使用... in语句.我读过w3school的文章,但我觉得不太清楚.下面是代码,请解释一下:

<html>
<body>
<script type="text/javascript">
var x;
var mycars = new Array();
mycars[10] = "Saab";
mycars[20] = "Volvo";
mycars[30] = "BMW";

for (x in mycars)
{
document.write(mycars[x] + "<br />");
}
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

SLa*_*aks 7

一个for in循环将通过一个对象的每个属性迭代.

在您的示例中,x变量将循环遍历mycars对象中的每个属性.

如果你添加mycars.expensive = "Porsche";,它也会发现.


需要注意的是,如说MDC,for in环应该被用来通过普通的数组循环:

尽管使用它作为迭代数组的方法可能很诱人,但这是一个坏主意.for...in除了数组元素之外,该 语句还会迭代用户定义的属性,因此如果您修改数组的非整数或非正属性(例如,通过"foo"向其添加属性或甚至通过添加方法或属性 Array.prototype), for...in语句除数字索引外,还将返回用户定义属性的名称.此外,由于迭代的顺序是任意的,因此迭代数组可能无法按数字顺序访问元素.因此,在迭代数组时,最好使用带有数字索引的传统for循环.甚至可以使用类似的参数来反对甚至使用for ... in(至少没有propertyIsEnumerable()或hasOwnProperty()检查),因为它也将遍历Object.prototype(虽然通常不鼓励,但可以在Array.prototype的情况,由用户有用地扩展,其中没有由于包含其他库而导致的名称空间问题,这些库可能不会对此类迭代执行上述检查,并且他们知道此类扩展对其自身使用的影响迭代器,例如for ... in).

  • `for in`循环可以与任何对象一起使用,但不应该用于普通数组. (4认同)