繁体   English   中英

javascript递归和范围说明

[英]javascript recursion and scope clarification

做一个简单的递归函数,调用另一个函数,并且范围是第一次正确工作的地方,但下次它总是将param设置为undefined

function log(string){
    console.log(string)
}

function repeat(operation, num, param) {
    if (num <= 0) return
    operation(param)
    return repeat(operation, --num)
}

repeat(log, 5, "hello there")

您没有将“param”参数传递给递归调用。

function log(string){
    console.log(string)
}

function repeat(operation, num, param) {
    if (num <= 0) return
    operation(param)
    return repeat(operation, --num, param)
}

repeat(log, 5, "hello there")

应该解决它。

修复变量名称:

par => param

operation(param)

你确定你只是不想这样做吗?

function log(string) {
    console.log(string);
}

function repeat(operation, num, param) {
    if (num <= 0) return;
    operation(param);
    return repeat(operation, --num, param);
}

repeat(log, 5, "hello there")

工作代码是:

function log(string){
    console.log(string)
}

function repeat(operation, num, param) {
    if (num <= 0) return
    operation(param)
    return repeat(operation, --num, param)
}

repeat(log, 5, "hello there")

当你以递归方式调用repeat时,你应该提供第三个参数 - param

diff:在第8行返回repeat(operation, - num, param

暂无
暂无

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

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