title: JavaScript有必要缓存for循环中的Array.length吗？
desc: 缓存 Array.length 是老生常谈的小优化。<br><br> 不缓存 <br>for var i 0 i lt arr.length i <br> ...<br><br><br> 缓存<br>var len arr.length<br>for var i 0 i lt len i <br> ...<br><br><br><br>但题主对这种破碎的写法感到不适，也对这种写法的实际优化效果产生疑问。<br><br>且推崇这种写法的朋友似乎很多也是“前辈这么说自己想了一下觉得有道理”。<br><br>由于 for 循环搭配 Array.length 是极度常用的 JavasScript 代码，题主认为很有必要搞清楚，也在整理自己的答案。各位也说一下见解吧。
topic: 前端开发
content: 题主来了 先上结论：缓存 Array.lengh 对优化影响不大，甚至会减慢。1从测试结果上看 stackoverflow 上也有这个讨论，For-loop performance storing array length in a variable 。accepted 的答案是说缓存会起到加速的结果，给出了 jsPerf 测试。但是有答案反对，也给出了 jsPerf 测试。两个答案的区别在于 （Loop-invariant code motion ） 后面会讲到。从另一篇文章 Shoud I have to cache my arrays length 的测
answerer_tags: ʞɔnɟ ǝɥʇ ʇɐɥʍ