了解JavaScript中的回调和返回函数

时间:2018-11-14 19:29:21

标签: javascript

我是编程和尝试理解回调函数以及一般函数的新手。该程序比较在函数中传递的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;
     }

然后我必须用()再次调用它。

1 个答案:

答案 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的返回值实际上已被调用。

相关问题