这个对话今天出现在我的工作中并且我无法完全掌握其中的差异,到目前为止我的谷歌搜索一直没有结果。
在工作中使用的例子是
之间的区别DoSomethingFunction().then(function(){ DoSomethingElse(); });
和
DoSomethingFunction().then(DoSomethingElse());
对我来说,我看第一个,它是一个匿名函数,因此只是被调用并在其中,是我们想要调用的函数,但这就是为什么我使用第二个版本,它只是调用函数没有将它包装在单独的功能中。
有人可以向我解释一下这个区别吗?
答案 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
函数中执行该函数以获得它的结果。