从 Javascript 中的函数中获取价值
Getting Value from Function in Javascript
我是 Javascript 的初学者并且 运行 遇到了一个小问题。这是一个家庭作业问题,但它只根据完成情况评分,所以我只是想为自己找出正确答案。
我应该定义一个函数 repeatUntil,它接受另外两个函数,比如 f(returns 一个数字)和 g(returns 一个布尔值)。 repeatUntil 的功能是重复函数 f 至少一次直到 g returns true.
这是我目前的情况:
function repeatUntil(f, cond) {
var f1;
do{
f1 = f;
return f1;
}
while(cond(f1()));
}
这里是 tester/how 我们称之为:
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() 的结果放入一个变量中,但它只会 return 一个函数而不是一个数字。
任何 help/advice 将不胜感激。谢谢!
将现有的评论合并为一个答案。
- 由于您需要调用
r()
,您的函数需要 return 另一个函数。
- do 循环将 运行 恰好一次,因为你 return 在循环体中
代码
function repeatUntil(f, cond) {
return function() {
while(cond(f()));
}
}
我是 Javascript 的初学者并且 运行 遇到了一个小问题。这是一个家庭作业问题,但它只根据完成情况评分,所以我只是想为自己找出正确答案。
我应该定义一个函数 repeatUntil,它接受另外两个函数,比如 f(returns 一个数字)和 g(returns 一个布尔值)。 repeatUntil 的功能是重复函数 f 至少一次直到 g returns true.
这是我目前的情况:
function repeatUntil(f, cond) {
var f1;
do{
f1 = f;
return f1;
}
while(cond(f1()));
}
这里是 tester/how 我们称之为:
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() 的结果放入一个变量中,但它只会 return 一个函数而不是一个数字。
任何 help/advice 将不胜感激。谢谢!
将现有的评论合并为一个答案。
- 由于您需要调用
r()
,您的函数需要 return 另一个函数。 - do 循环将 运行 恰好一次,因为你 return 在循环体中
代码
function repeatUntil(f, cond) {
return function() {
while(cond(f()));
}
}