我有一个用javascript编写的函数以递归方式调用自己:
function f(attempt){
if (attempt + 1 <= 10) {
setTimeout(f(attempt + 1),2000);
}
}
f(0);
由于未知原因,该函数被有效调用了 10 次,但没有任何延迟。setTimeout 似乎立即执行函数 f。
但是,当我这样做时,一切正常:
function f(attempt){
if (attempt + 1 < 10) {
setTimeout(function(){f(attempt + 1);},2000);
}}
f(0);
你有解释吗?是因为这段代码是为 Cucumber 测试编写的吗?