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