什么's调用函数和传递函数的区别

what's the difference between calling a function and passing a function?

本文关键字:传递函数 区别 函数 调用 什么      更新时间:2024-04-03

今天在工作中出现了这段对话,我没有完全理解其中的区别,到目前为止,我在谷歌上的搜索一直没有结果。

工作中使用的例子是之间的差异

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

DoSomethingFunction()。然后(DoSometingElse());

对我来说,我看第一个,它是一个匿名函数,所以它会被调用,在它里面,是我们想要调用的函数,但这就是为什么我使用第二个版本,它只调用函数,而不将其封装在一个单独的函数中。

有人能向我解释一下其中的区别吗?

JavaScript中的函数是对象,可以像任何其他对象一样传递。CCD_ 1是可以用CCD_ 2执行的功能对象。

.then需要一个函数对象,所以下面的函数只执行该函数并返回其值,如果不返回任何值,则返回undefined

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

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

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

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

DoSomethingFunction().then(DoSomethingElse);

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

DoSomethingFunction().then(DoSomethingElse());

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

DoSomethingFunction().then(DoSomethingElse);

传递一个函数,然后需要在then函数中执行该函数才能得到结果。