繁体   English   中英

如何在javascript中中断递归回调函数

[英]how to break a recursive callback function in javascript

在这里,我传递了一个回调函数,该函数可以在运行时调用自身,并在每次调用时打印一个递增 1 的值。我希望它在某个值后中断。我该怎么做?

我收到以下错误:

未捕获的语法错误:意外的令牌返回

<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>

您不能在三元运算符中return 即使可以,您的递归也不会起作用,因为它始终会在执行arguments.callee之前返回。 另外,不推荐使用arguments.callee因为它会在严格模式下抛出错误。

 function main(callback) { callback(3); } main(function redo(val) { console.log(val); if (val > 50) return; redo(val + 1); });

无论如何你都会回来。

相反,如果不满足终止条件,您需要继续递归调用。 就像是:

 function main(callback) { callback(3); } main(function(val) { console.log(val); // if condition is met, quit if (val > 50) { return; } // else do recursive call arguments.callee(val + 1); });

如果您想保留三元运算符,您也可以这样做:

val > 50? false : arguments.callee(val + 1);

你的功能应该是这样的

main(function(val) { console.log(val); if( val < 50 ) arguments.callee(val + 1); });

来到问题和错误

val > 50 ? return false: return true;

这行代码是错误的,必须使用三元运算符为变量赋值,而不是像可执行块一样使用它。

var flag = val > 50 ? false: true;

已验证。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM