我从书中了解到,你应该这样写:

for(var i=0, len=arr.length; i < len; i++){
    // blah blah
}

因此,不会每次计算arr.length.

其他人说编译器会对此进行一些优化,因此您只需编写:

for(var i=0; i < arr.length; i++){
    // blah blah
}

我只是想知道实践中哪种方法最好?

推荐答案

在使用大多数现代浏览器执行此测试后:

Currently,循环的最快形式(在我看来是最明显的语法).

带长度缓存的循环标准

    var i = 0, len = myArray.length;
    while (i < len) {
        // your code
        i++
    }

我想说的是,这绝对是我为JavaScript引擎开发人员鼓掌的情况.运行时应优化为clarity, not cleverness.

Javascript相关问答推荐

Promise.all立即跳到那时,而不是调用所有Promise

如何使用Paged.js仅渲染特定页面

为什么在集内和集外会产生不同的promise 状态(使用Promise.race)?

为什么使用MAX_SAFE_INTEGER生成随机整数时数字分布不准确?

按下同意按钮与 puppeteer 师

如何在Javascript中使用Go和检索本地托管Apache Arrow Flight服务器?

更改JSON中使用AJAX返回的图像的路径

如何从Intl.DateTimeFormat中仅获取时区名称?

闭包是将值复制到内存的另一个位置吗?

用JS从平面文件构建树形 struct 的JSON

从页面到应用程序(NextJS):REST.STATUS不是一个函数

使每个<;li>;元素的 colored颜色 与随机生成的 colored颜色 列表不同(不重复

如何在一个对象Java脚本中获取不同键的重复值?

我正在试着做一个TicTacToe Ai来和我玩.但是,我试着在第一个方块被点击时出现一个X,然后在第二个方块之后出现一个O

如何修复错误&语法错误:不能在纯react 项目中JEST引发的模块&之外使用导入语句?

顶点图使用组标签更新列之间的条宽

如何在尚未创建的鼠标悬停事件上访问和着色div?

如何在Jest中模拟函数

为什么NULL不能在构造函数的.Prototype中工作

select 2-删除js插入的项目将其保留为选项