在javascript中编写for循环的更好方法
better way of writing for loop in javascript
我最近在文章
的某个地方看到了以下for循环var i, len, arr = [1, 2, 3];
for (i = 0, len = arr.length; i < len; i++) {
// do stuff here
}
但是我不知道为什么上面的循环要比下面的
用var i, arr = [1, 2, 3];
for (i = 0; i < arr.length; i++) {
// do stuff here
}
哪个更好,哪个更喜欢使用?
唯一的区别似乎是缓存数组的长度,这在某些情况下节省了一些时间,因为长度属性不必在每次迭代时都查找,但对于具有三个索引的数组来说,它没有任何区别,如果数组有一百万个索引,它可能也不会有太大的区别,所以做任何你喜欢的事情。
就我个人而言,如果可能的话,我总是倾向于反向迭代,以避免缓存长度,活节点列表和其他问题。
for (var i=arr.length; i--;) {
}
这可能是一个优化(或者像其他人已经提到的微优化)。
一个必须的情况是在live DOM NodeList
s上迭代。
var divs = document.getElementsByTagName( 'div' );
for (var i = 0; i < divs.length; i++ ) {
// Neverending loop
document.body.appendChild( document.createElement( 'div' ) );
}
当使用实时集合时,开发人员需要采取预防措施。要么缓存长度,要么获取集合的快照,然后遍历快照。
当您在循环中使用函数length
时,该函数每次都被调用。最好声明一个新变量,并将数组长度保存在里面:
for(var j=0, arrayLength=array.length; j < arrayLength ;j++){}
相关文章:
- 让ajax在服务器端的for循环内部或外部更好?Javascript
- JavaScript:有没有更好的方法来使用回调函数做一个for循环
- 有更好的方法吗?在多个函数中重用同一个循环
- Jquery循环遍历数组-必须有更好的方法
- 更好地理解循环中的JavaScript闭包
- 嵌套循环,有更好的方法吗
- 如何更好地编写这个javascript循环
- 当涉及到这些$.each循环时,什么更快/更高效/更好
- 使用超时循环将数据加载到iframe的更好选项
- 更好的实践:消除嵌套循环
- 验证函数,并循环遍历对象以获得更好的性能
- 有没有更好的方法来循环通过一系列的类点击比这个javascript
- 循环对象来检查特定属性是否存在,有没有更好的方法,比如使用下划线
- 当运行for循环时,哪个在coffeescript中更好/更有效
- 在数组中查找对象的更好方法,而不是循环
- 跳出jQuery循环vs原生JS for循环.哪个更好
- 更改对象上的循环以更好地运行
- JavaScript for循环性能-在函数中更好
- 使用jquery实现更好的循环
- $.inArray()循环问题的更好语法