如何在javascript中中断递归回调函数
在这里,我传递了一个回调函数,它可以在运行时调用自己,并在每次被调用时打印一个递增的值。我希望它在某个值之后中断。我如何做到这一点 我得到以下错误: 未捕获的语法错误:意外的令牌返回如何在javascript中中断递归回调函数,javascript,Javascript,在这里,我传递了一个回调函数,它可以在运行时调用自己,并在每次被调用时打印一个递增的值。我希望它在某个值之后中断。我如何做到这一点 我得到以下错误: 未捕获的语法错误:意外的令牌返回 函数main(回调){ 回调(3); } 主(功能(val){ 控制台日志(val); val>50?返回false:返回true; 参数。被调用方(val+1); }); 无论发生什么,您都将返回 相反,如果不满足终止条件,则需要继续递归调用。比如: 函数主(回调){ 回调(3); } 主(功能(val){
函数main(回调){
回调(3);
}
主(功能(val){
控制台日志(val);
val>50?返回false:返回true;
参数。被调用方(val+1);
});
无论发生什么,您都将返回
相反,如果不满足终止条件,则需要继续递归调用。比如:
函数主(回调){
回调(3);
}
主(功能(val){
控制台日志(val);
//如果满足条件,则退出
如果(val>50){
返回;
}
//否则做递归调用
参数。被调用方(val+1);
});代码>您的函数应该是这样的
main(功能(val){
控制台日志(val);
如果(val<50)
参数。被调用方(val+1);
});代码>
然后谈到问题和错误
val>50?返回false:返回true代码>
这行代码是错误的,必须使用三元运算符为变量赋值,而不能像使用可执行块一样使用它
var flag=val>50?假:真代码>
这是有效的 在三元运算符中不能返回。即使可以,您的递归也不会工作,因为它总是在执行参数之前返回。被调用方。另外,不建议使用参数.callee
,因为它将在严格模式下抛出错误。
函数主(回调){
回调(3);
}
主(功能重做(val){
控制台日志(val);
如果(val>50)返回;
重做(val+1);
});
是否会调用函数参数。被调用方(val+1)
?您正在从上一行的父函数返回。选择对您最有帮助的答案是很有礼貌的。如果值为50Lol,它将立即停止。是的,我在阅读注释之前修复了它,即使这样,它也不会是一个无限循环,因为我的条件3>50在第一次尝试时会失败,我的循环会停止,删除我的注释,但是如果我这样做val>50会怎么样?返回:arguments.callee(val+1);不工作在这种情况下,您可以使用val>50?false:参数。被调用方(val+1)
-在这种情况下,return
子句不能很好地使用三元运算符
<html>
<body>
<script>
function main(callback) {
callback(3);
}
main(function(val) {
console.log(val);
val > 50 ? return false: return true;
arguments.callee(val + 1);
});
</script>
</body>
</html>