这两位中的哪一位执行(计数)更快?
var i = 0;
while(true){
i++;
}
或
var i = 0;
inc = function(){
i++;
inc();
}
如果循环代码/函数变长,首选方式是否会改变?
答案 0 :(得分:7)
这只会给你一个堆栈溢出,因为递归没有结束条件:
var i = 0;
inc = function(){
i++;
inc();
}
对于足够大的i
,这将比标准循环更快失败。
更一般地说,调用函数的开销大于循环。在帮助您的代码重用或可读时帮助您创建一个函数。循环很快。
答案 1 :(得分:4)
如果迭代次数很少,那就无所谓了。调用函数会有更多的开销,但这对短循环没有太大的影响。
第二种方法受堆栈大小的限制。如果你有太多的迭代,它将耗尽堆栈空间并崩溃。
所以,第一种方法会运行得更快,但整个问题都没有实际意义,因为第二种方法在循环中崩溃的风险很大,足以让速度发挥作用。