调用函数和传递函数有什么区别?

时间:2013-12-05 09:44:22

标签: javascript function

这个对话今天出现在我的工作中并且我无法完全掌握其中的差异,到目前为止我的谷歌搜索一直没有结果。

在工作中使用的例子是

之间的区别
DoSomethingFunction().then(function(){
                 DoSomethingElse();
          });

DoSomethingFunction().then(DoSomethingElse());

对我来说,我看第一个,它是一个匿名函数,因此只是被调用并在其中,是我们想要调用的函数,但这就是为什么我使用第二个版本,它只是调用函数没有将它包装在单独的功能中。

有人可以向我解释一下这个区别吗?

2 个答案:

答案 0 :(得分:3)

JavaScript中的函数是对象,可以像任何其他对象一样传递。 DoSomethingElse是一个可以使用DoSomethingElse()执行的函数对象。

.then需要一个函数对象,因此以下只执行该函数并返回其值,如果它不返回任何内容则返回undefined

 // this is wrong, unless `DoSomethingElse` returns a function
DoSomethingFunction().then(DoSomethingElse());

下面传递一个匿名函数(这是.then所期望的函数),然后在里面执行DoSomethingElse

DoSomethingFunction().then(function(){
  DoSomethingElse();
});

以下将函数对象传递给then,并执行与上述相同的操作:

DoSomethingFunction().then(DoSomethingElse);

答案 1 :(得分:0)

传递函数意味着函数作为参数传递,并且可以在被调用函数中调用它。调用函数意味着执行函数体,并返回一个值。在你的例子中

DoSomethingFunction().then(DoSomethingElse());

传递函数调用的结果,因此调用DoSomethingElse的结果(返回值)。 在

的情况下
DoSomethingFunction().then(DoSomethingElse);

传递一个函数,然后需要在then函数中执行该函数以获得它的结果。