任何人都可以解释如何在 javascript 中使用 for...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>
A for in loop https://developer.mozilla.org/en/JavaScript/Reference/Statements/for...in将迭代对象中的每个属性。
在你的例子中,x
变量将循环遍历中的每个属性mycars
object.
如果你添加mycars.expensive = "Porsche";
,它也会发现这一点。
请注意,正如所述MDC https://developer.mozilla.org/en/JavaScript/Reference/Statements/for...in, for in
循环应该not用于循环普通数组:
尽管它可能很诱人使用
这是迭代的一种方式Array https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Array,
这是一个坏主意。这for...in
陈述
迭代用户定义的属性
除了数组元素之外,所以
如果修改数组的非整数
或非正属性(例如
添加一个"foo"
财产
甚至通过添加方法或
财产给Array.prototype
), 这for...in
声明将
返回您的用户定义的名称
除了数字之外的属性
索引。另外,由于顺序
迭代是任意的,迭代
数组不能访问其中的元素
数字顺序。因此最好
使用传统的for https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Statements/for循环时使用数字索引
迭代数组。相似的
甚至可能会使用论据来反对
完全使用 for...in (至少
没有属性是可枚举的 https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Object/propertyIsEnumerable()
或 hasOwnProperty()
检查),因为它也会迭代
超过 Object.prototype (虽然
通常不鼓励,可以,如
Array.prototype 的情况,很有用
由用户扩展,其中没有
引起的命名空间问题
包含其他库
可能不会执行上述检查
这样的迭代以及它们在哪里
意识到这种扩展的影响
都会有自己使用的
迭代器,例如 for...in)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)