如何在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>