这里我传递了一个回调函数,该函数可以在运行时调用自身,并在每次调用时打印一个递增1的值。我希望它在某个值之后中断。我怎么能这样做?
我收到以下错误:
未捕获的SyntaxError:意外的令牌返回
<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>
答案 0 :(得分:1)
你不能在三元运算符中return
。即使它可以,你的递归也不会起作用,因为它总会在执行arguments.callee
之前返回。此外,不建议使用arguments.callee
,因为它会在严格模式下抛出错误。
function main(callback) {
callback(3);
}
main(function redo(val) {
console.log(val);
if (val > 50) return;
redo(val + 1);
});
答案 1 :(得分:0)
无论如何,你都会回来。
相反,如果不满足终止条件,则需要继续递归调用。类似的东西:
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);
答案 2 :(得分:0)
你的功能应该是这样的
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;
有效。