这些for循环不同吗?
Are these for loops different?
代码
示例1for (var k = 0, l = value.length; k < l; k++, index++) {
// ...
}
示例2 var l = value.length;
for (var k = 0; k < l; k++, index++) {
// ...
}
在例1中,变量l是在for括号内定义的,所以这是否意味着每次循环进行时都要定义l ?如果是这样,那么例2会更有效,对吧?
他们的速度是一样的。没有什么不同。
但我建议你使用例2,因为它更好地阅读
代码段之间没有效率差异。
第一个代码段中的l = value。长度被调用一次。就像k = 0
两者完全相同,没有区别
相同的代码,使用第二个为可读性
我对这里给出的答案感到惊讶。
例1是许多书籍和文章中提到的一个著名的反模式。它在每个循环中重新计算l。根据在for-call(第一个参数除外)中放置的这个(或任何其他不必要的)操作的开销,代码可能需要更长的时间来执行。
示例2比较好,因为l
的值只计算一次,并且被缓存。缓存是一个非常重要的概念,这个简单的示例演示了它。而且,即使在循环内更改value
,它也可以工作,而第一个示例可能会导致意想不到的结果。
在我看来,使用示例1的唯一可能的原因是当你确实需要为每个循环重新计算l
时,例如,当循环改变value
时,你真的想更新l
。
相关文章:
- 为什么JavaScript在for循环为3时向所有4发出警报
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 我的javascript for循环不起作用
- For循环冻结Javascript
- 如何在for循环中添加事件侦听器
- 双“for”循环(循环)
- javascript for循环不起作用
- for循环中的javascript if语句找不到==
- Javascript在for循环中等待处理请求
- For循环在Jquery中只运行一次
- 如何在for循环中使用计数器
- for循环中的JavaScript闭包
- 为什么我们在ES2015中需要一个新的for循环结构,而我们已经有了for、forEach
- For循环在调用时未运行
- 如何使用for循环添加所有按钮'单击事件
- 如何更改在for循环中生成的圆的位置
- 为什么这个For循环会使浏览器实验室崩溃
- 为什么我使用javascript获得了一个无限的for循环
- 在for循环中使用多维数组设置google.maps.Marker图标
- 如何在angularJS中运行for循环而不使用html标记