首页 - 崮生写笔记的地方

你自己的循环

题目: 编写一个高阶函数loop,提供类似for循环语句的东西。 它接受一个值,一个测试函数,一个更新函数和一个主体函数。 每次迭代中,它首先在当前循环值上运行测试函数,并在返回false时停止。 然后它调用主体函数,向其提供当前值。 最后,它调用update函数来创建一个新的值,并从头开始。

定义函数时,可以使用常规循环来执行实际循环。

loop(3, n => n > 0, n => n - 1, console.log);
// → 3
// → 2
// → 1

解 :

function loop(value,testFun,updateFun,Fun) {
    if(testFun(value)===false)
        return
    Fun(value)
    return loop(updateFun(value),testFun,updateFun,Fun)
}
loop(3, n => n > 0, n => n - 1, console.log);
代码库-git