求解释JavaScript代码中特殊for循环写法的逻辑与作用
for循环特殊写法解释
你觉得这个for循环有4个参数是误解,JavaScript的for循环语法固定是3个逻辑块,用英文分号分隔,不存在4个参数的情况,你看到的逗号是变量声明时的分隔符,不属于for循环的参数分隔符。
你标注的代码行for(var i=0,l=aObj.length; i< l;i++)的三个逻辑块分别是:
- 初始化块(第一个分号前):一次性声明两个变量,
i作为循环计数器初始值为0,l存储数组aObj的总长度。var a=1,b=2是JS里同时声明多个变量的标准写法,用逗号分隔即可,完全属于初始化块里的内容,不是for循环的额外参数。 - 条件判断块(两个分号中间):
i < l,每次进入循环体前先做判断,只有计数器小于数组总长度时才执行循环里的代码。 - 迭代块(第二个分号后):
i++,每次循环体执行完成后,计数器自动加1。
作者这么写是常见的前端性能优化习惯:如果写普通的for(var i=0;i<aObj.length;i++),每次做条件判断时都要重新读取一次aObj的length属性,当数组长度很大、循环次数很多时,反复读取属性会带来微小的性能损耗。提前把长度存在变量l里,只需要读取一次length属性,就能减少不必要的重复读取,提升循环执行效率。现在浏览器JS引擎已经做了很多优化,两种写法性能差距极小,但很多老开发者还是保留了这个写法习惯,两种写法的功能完全一致。
内容的提问来源于stack exchange,提问作者student345
相关产品推荐
相关产品推荐

