你认为……有很大的不同吗?In和for循环?你更喜欢用哪种for ?为什么?
假设我们有一个关联数组数组:
var myArray = [{'key': 'value'}, {'key': 'value1'}];
所以我们可以迭代:
for (var i = 0; i < myArray.length; i++)
And:
for (var i in myArray)
我看不出有什么大的不同。是否存在性能问题?
你认为……有很大的不同吗?In和for循环?你更喜欢用哪种for ?为什么?
假设我们有一个关联数组数组:
var myArray = [{'key': 'value'}, {'key': 'value1'}];
所以我们可以迭代:
for (var i = 0; i < myArray.length; i++)
And:
for (var i in myArray)
我看不出有什么大的不同。是否存在性能问题?
当前回答
我会根据我想引用项目的方式使用不同的方法。
如果只需要当前项,请使用foreach。
如果需要索引器进行相对比较,请使用for。(也就是说,这与上一项/下一项相比如何?)
我从来没有注意到性能上的差异。我会等到出现性能问题时再担心。
其他回答
jQuery用户
jQuery的each(回调)方法使用for(;,)默认情况下循环,仅当长度未定义时才使用for(in)。
因此,我认为在使用这个函数时,假设正确的顺序是安全的。
例子:
$(['a','b','c']).each(function() {
alert(this);
});
//Outputs "a" then "b" then "c"
使用它的缺点是,如果你在做一些非UI逻辑,你的函数将不太容易移植到其他框架。each()函数可能最好保留给jQuery选择器使用,而对于(;,)否则可能是明智的。
我曾见过使用对象、原型和数组的“for each”的问题
我的理解是for each是对象的属性,而不是数组
2012年所有主流浏览器当前版本的更新答案- Chrome, Firefox, IE9, Safari和Opera支持ES5的原生array.forEach。
除非你有理由在本地支持IE8(记住ES5-shim或Chrome框架可以提供给这些用户,这将提供一个适当的JS环境),否则使用语言的正确语法会更干净:
myArray.forEach(function(item, index) {
console.log(item, index);
});
array.forEach()的完整文档在MDN上。
注意本机Array。每种方法现在都得到广泛支持。
for(;;)用于数组:[20,55,33]
{x:20,y:55:z:33}