请帮助新手解决。
有这样的代码:
function makeDouble (x) {
return x * 2;
}
var doMath = (x, func) => func(x + 5);
var num = 5;
任务是:
*仅使用makeDouble,doMath和num,使num的值等于20。
num = _____________________________________________________ *
我不明白为什么箭头功能的参数中有两个参数,但是在此功能本身中,只有一个参数。我在做什么错?
doMath()
中的两个参数都被使用。第一个是参数x
将在第二个参数func
的函数调用中用作参数,并且从该函数调用返回的值将由doMath()
本身返回。
您可以将箭头功能转换为:
function doMath(x, func) { return func(x+5); }
因此您将一个值(x)和一个函数(func)传递给doMath函数。 func可以是任何函数,例如makeDouble ...您可以像这样调用它:
doMath(1, makeDouble)
结果将是(1 + 5)* 2 = 12。
我想您可以据此找出其余的内容。
答案是num = doMath(num, makeDouble)
函数主体中还有2个参数。让我们再近一点func(x+5)
func是函数的第二个参数,我们传递给它的x是第一个参数
这里,func
是一个回调函数。在javascript中,您可以传递function
作为参数,就像传递任何其他变量一样,例如整数,对象或数组。因此,在doMatch
中,您要传递一个数字和一个回调函数。执行doMatch
时,它将使用参数func
(5 + 5)调用10
。现在,将执行Func
,并返回2*10
(20)
function makeDouble (x) {
return x * 2;
}
var doMath = (x, func) => func(x + 5);
var num = 5;
console.log(doMath(num, makeDouble))
function makeDouble (x) {
return x * 2;
}
const doMath = (x, func) => func(x + 5);
const num = 5;
let result = doMath(num, makeDouble);
console.log(result);// 20
doMath(x, func)
是带有两个参数的箭头函数。第一个参数是您的数值,第二个参数是一个函数,在这种情况下为makeDouble(x)
。在箭头函数内部,使用数字参数+ 5调用makeDouble(x)
函数,例如makeDouble( num + 5)
。在这种情况下,num在构造函数中添加了五个,因此这次makeDouble返回10 * 2的乘积。此外,我建议修改var的用法。当前,使用let和const优先于var。
箭头功能可以将其他功能用作参数,这对于使用递归和功能编程非常有用。
非常感谢大家!
我的问题是,我没有注意到arrow函数参数中的makeDouble()函数没有返回值,而是函数本身的内容。然后在arrow函数的主体中,可以作为参数调用makeDouble()函数。