javascript中'for ... in'和'for each ... in'之间有什么区别?

Dar*_*htA 3 javascript foreach for-loop

我知道在C#中你使用这样的foreach:foreach string str in array1 {console.writeline(str);} 是"for each ... in"在JavaScript中也是这样使用的吗?

Fel*_*ing 7

Afaik只支持Firefox for each...in.它不是任何标准的一部分,大多数工具(如JSLint)在遇到错误时都会抛出错误.

区别在于for...in在对象的for each...in循环,而在值上循环.

所以推荐的方法是不使用 for each和做

for (var key in obj) {
    console.log(obj[key]);
}
Run Code Online (Sandbox Code Playgroud)

代替.

更新:我不能说它与C#有什么关系.但是关于数组:永远不要用于for...in遍历数组(这里是黄色框):

尽管使用它作为迭代数组的方法可能很诱人,但这是一个坏主意.for...in除了数组元素之外,该语句还会迭代用户定义的属性,因此如果您修改数组的非整数或非正属性(例如,通过向其添加"foo"属性,或者甚至通过添加方法或属性Array.prototype) ,for...in除了数字索引之外,该语句还将返回用户定义属性的名称.

for改为使用普通循环:

for(var i = 0, l = arr.length; i<l; i++)
Run Code Online (Sandbox Code Playgroud)

或更多幻想:

for(var i = arr.length; i--;)
Run Code Online (Sandbox Code Playgroud)