[英]How to break out of a for loop inside a recursive function and return in 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.