javascript for循环

Kar*_*ath 1 javascript for-loop

我的一个同事在mongo mapreduce中创建了一个愚蠢的bug,他应该创建一个对象但实际上传递了字符串"{}".奇怪的是脚本没有崩溃,但实际上迭代了字符串,所以我做了一些调查,发现了以下内容:

该脚本x="bla"; for (i in x) { alert(i); };使用以下方式使用不同的浏览器:

  • IE(8): - (无警报)
  • Chrome:0 1 2
  • Firefox(较旧的):0 1 2 vBlength
  • Firefox 5:0 1 2
  • MongoDB:0 1 2 trim ltrim rtrim

我完全知道这不是一个有效的语法,只是纯粹的好奇心,是否有人知道为什么浏览器的行为方式如此?我对MongoDB的行为特别感兴趣.

Jus*_*ner 5

实际上,这是完全有效的语法.

在JavaScript中使用for ... in循环不仅会循环遍历数组,还会循环遍历属性(我只是一个索引,而不是数组中的实际值).

查看Mozilla开发者网络上的文档:

for ... in - MDN Docs

他们的榜样应该让事情更清楚.