javascript递归和范围说明

时间:2016-02-07 01:27:45

标签: javascript recursion

执行一个简单的递归函数,调用另一个函数,并且范围是第一次正确工作的位置,但下次总是将参数设置为未定义

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

4 个答案:

答案 0 :(得分:3)

你没有通过&#34; param&#34;递归调用的参数。

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

应该修复它。

答案 1 :(得分:2)

修复变量名称:

par =&gt; param

operation(param)

答案 2 :(得分:1)

你确定你不想这样做吗?

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

答案 3 :(得分:1)

工作代码是:

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行返回重复(操作, - num, param