我是编程和尝试理解回调函数以及一般函数的新手。该程序比较在函数中传递的2个值(使用回调),并向我们返回true / false。
function func1(param1, callback) {
return callback(param1);
}
function func2(param2) {
return function(param3) {
return param3 > param2;
}
}
var functionResult = func1(10, func2(9));
console.log(functionResult); // prints - true
问题-在上面的程序中,func2函数内部的return函数如何将值直接返回给我们,而不被调用?我认为在这一行var functionResult = func1(10, func2(9));
func2(9)仅返回文本
function(param3) {
return param3 > param2;
}
然后我必须用()再次调用它。
答案 0 :(得分:2)
func2函数内部的return函数如何将值直接返回给我们,而不会被调用?
它被调用。 func1
在这里调用它:
callback(param1)
func2(9)将仅返回文本...
这不是文本,实际上是一个函数(对象)。它被传递到func1
,后者依次调用它并返回其返回值。
然后我必须用()再次调用它。
是的,func1
也是这样:
callback(param1)
让我们分崩离析:
var functionResult = func1(10, func2(9));
与
相同var func2Result = func2(9);
var functionResult = func1(10, func2Result);
由于我们知道func1
的作用,因此可以将其调用替换为其实现。 10
作为param1
传递,func2Result
作为callback
传递,因此代码变为:
var func2Result = func2(9);
var functionResult = func2Result(10); // callback(param1);
现在您应该能够看到func2
的返回值实际上已被调用。