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

标签 javascript function

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

工作中使用的示例是之间的区别

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

DoSomethingFunction().then(DoSomethingElse());

对我来说,我看第一个,它是一个匿名函数,所以它会被调用,并且在它的内部,是我们想要调用的函数,但这就是我使用第二个版本的原因,它只调用函数而不将其包装在单独的函数中。

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

最佳答案

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);

关于javascript - 调用函数和传递函数有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20396481/

相关文章:

C编程: dereferencing pointers

javascript - 在 JavaScript 和变量作用域中嵌套函数?

r - 在具有构面和多个几何图形的函数中使用 ggplot

javascript - 当使用 observe 分配函数时,如何将参数传递给该函数?

javascript - 如何更改 Bootstrap 中模态的默认定位?

javascript - 对同一个数组运行两个 for 循环

javascript - 应该是交互式的功能,但它只能运行一次

javascript - 在 IE8 中,并非每次都能获取对嵌套框架对象的引用。添加alert()时它会起作用!

javascript - for循环中的Object.defineProperty

function - Lisp 中的多项式