代码之家  ›  专栏  ›  技术社区  ›  Riadiani

从Javascript中的函数获取值

  •  0
  • Riadiani  · 技术社区  · 9 年前

    我是Javascript的初学者,遇到了一个小问题。这是一个家庭作业问题,但它只是根据完成情况进行评分,所以我只是想为自己找出正确的答案。

    我应该定义一个函数,repeatUntil,它接受另外两个函数,例如f(返回一个数字)和g(返回布尔值)。repeatUntil的功能是至少重复函数f一次,直到g返回true。

    以下是我到目前为止的情况:

    function repeatUntil(f, cond) {
       var f1;
    
       do{
         f1 = f;
         return f1;
       }
       while(cond(f1()));
    }
    

    下面是测试人员/我们如何称呼它:

    var print = console.log;
    var r = repeatUntil(function(x) { return x + x }, function(x) { return x >= 20 })
    print(r(2))
    print("Expected: 32")
    

    函数运行,但我现在的问题是从repeatUntil函数中存储x的更新值。现在函数只运行一次,条件没有更新,因为我无法将更新后的x值传递给函数g。我尝试将f()的结果放入变量中,但它只返回一个函数,而不是一个数字。

    任何帮助/建议都将不胜感激。非常感谢。

    1 回复  |  直到 9 年前
        1
  •  0
  •   Ruan Mendes    9 年前

    将现有评论合并为答案。

    • 既然你需要打电话 r() ,您的函数需要返回另一个函数。
    • do循环将只运行一次,因为您在循环体中返回

    密码

    function repeatUntil(f, cond) {
       return function() {
           while(cond(f()));
       }
    }