Javascript中什么更快?循环或重复的函数调用

What is faster in Javascript? A loop or repeated function call?

本文关键字:函数调用 循环 什么 Javascript      更新时间:2023-09-26

这两个位中哪一个执行(计数)更快?

var i = 0;
while(true){
    i++;
}

var i = 0;
inc = function(){
    i++;
    inc();
}

如果循环的代码/函数变长,首选的方式会改变吗?

这只会导致堆栈溢出,因为递归没有结束条件:

var i = 0;
inc = function(){
    i++;
    inc();
}

对于一个足够好的i,这将比标准循环失败得更快

更普遍地说,调用函数的开销比循环要大。当函数有助于代码的可重用性或可读性时,请创建它。循环很快。

如果迭代次数很少,那也没什么大不了的。调用函数会有更多的开销,但对于短循环来说,这并没有太大的区别。

第二种方法受到堆栈大小的限制。如果迭代次数过多,它将耗尽堆栈空间并崩溃。

因此,第一种方法会运行得更快,但整个问题都没有意义,因为第二种方法在一个足够长的循环中崩溃的风险很大,速度会产生影响。