gpt4 book ai didi

javascript - 为什么在使用 for(;i
转载 作者:行者123 更新时间:2023-12-02 17:22:13 26 4
gpt4 key购买 nike

我正在学习 JavaScript,我在一些书籍/教程中看到了这一点:

myvariable = myArray.length;
for(i = 0; i < myVariable; i++){
doSomething;
}

如果我这样写有什么区别(我的意思是如果我不创建一个保存数组长度的变量并且我直接在 for 中使用 myArray.length 循环。

for(i = 0; i < myArray.length; i++)
{
doSomething;
}

哪个更好?

P.S:抱歉我的英语不好,这不是我的母语。

谢谢。

最佳答案

与给定代码没有功能差异。

for 语句中声明变量的方式存在轻微的性能差异(在大多数情况下可以忽略不计)。

执行此操作时:

for(var i = 0; i < someArray.length; i++)

var isomeArray.length 每次迭代都会进行评估。因此,循环发生所需的总时间 d 就是计算变量所需的时间 t 乘以迭代次数 i,你的循环:

d = t*i

因此,如前所述,这种差异在大多数情况下可以忽略不计。第一种方式编写需要的代码较少,但这样做会降低d:

var i = 0,
len = someArray.length;

for( ; i<len; i++)

但是,有时每次迭代都需要评估 someArray 的长度,因为 someArray 的长度可能会发生变化(例如,从 someArray 中删除元素时) ):

for(var i = 0; i<someArray.length; i++) {
someArray.splice(someArray.length - 1, 1);
}

这将删除 someArray 的最后一个元素,如果您不为循环的每次迭代重新计算 someArray 的长度,某些浏览器将抛出错误.

<小时/>

要查看如何以多种不同方式编写相同循环的一些示例(以及查看性能差异),请参阅此 jsperf (JavaScript 性能测试)。

关于javascript - 为什么在使用 for(;i<len;) 之前将数组长度保存到变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23836558/

26 4 0

Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com