是否需要在for循环中缓存长度值。

是否需要在for循环中缓存长度值。
如果需要在for循环中缓存长度值,我相信很多程序猿都卷入了这个问题。

在JS性能优化中,有一个常见的小优化,即

非缓存
对于(var i = 0;i < arr.length;i++){

}

缓存
VaR len = arr.length;
对于(var i = 0;i < i;i + +){

}

那么,我们是否应该放弃这种写作方式,还有另一种情况必须加以利用。

看看例子:

复制代码代码如下所示:

var div = document.getelementsbytagname(div),我,DIV;

为(i = 0;i < divs.length;i++){

div = document.createelement(div);

document.body.appendchild(div);

}
上面的代码会导致无限循环:第一行代码将获得所有的div元素的节点列表,因为列表是动态的,只要有一个新的div添加到页面上,下一个周期将在divs.length评价,所以我和divs.length每次会增加,他们不平等的价值,创造了一个死循环。

所以如果你想遍历列表,最好是用长度属性初始化二变量,然后比较迭代器的变量,修改的代码如下:

复制代码代码如下所示:

var div = document.getelementsbytagname(div),我,DIV,Len;

为(i = 0;len = divs.length;我< len;i++){

div = document.createelement(div);

document.body.appendchild(div);

}
在这个例子中,Len的初始化,由于晶状体divs.length快照保存在一个周期的开始,因此避免无限循环的一个例子,所以当需要迭代的列表,用这种方法进行保险。

总结:

1、缓存长度值有助于性能优化。这是一个根据具体情况来判断的问题。一般来说,减少DOM访问是很好的。

2。当你需要操作的节点列表,建议长度的值被缓存,以避免死循环。

以上内容全面介绍了在for循环中缓存长度值的需要,希望您喜欢它。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部