为什么在javascript中首先执行回调函数?

素食主义者

在下面的例子中。lnamefname函数内的回调函数。执行时,第一个输出是史密斯和比利。根据我的理解,一旦 fname 函数执行完毕,就应该执行回调函数lname为什么这里错了?

function fname(){ console.log("Billy");}
function lname(){ console.log("Smith");}
fname(lname());

阿马丹

在下面的例子中。lname是函数内部的回调fname函数。

不它不是。您正在调用 lname(因为您添加了括号),并将其调用的结果(恰好是undefined,就像任何时候函数没有明确return的值一样)传递给fname. 就像Math.floor(Math.sqrt(10))- 这里没有回调。fname(lname())之间有很大的区别fname(lname):后者将一个函数本身传递给另一个函数;如果它实际上被回调,我们将称其为“回调”。

根据我的理解,回调函数lname应该在fname函数执行完成后执行。

再次,没有。回调在调用时执行,不多也不少。例如:

function printsSomething() {
  console.log("Something");
}
function invokesCallbackAtEnd(callback) {
  console.log("invokesCallbackAtEnd doing something");
  callback();
}
function invokesCallbackAtStart(callback) {
  callback();
  console.log("invokesCallbackAtStart doing something");
}
function invokesCallbackAtStartAndEnd(callback) {
  callback();
  console.log("invokesCallbackAtStartAndEnd doing something");
  callback();
}
function invokesCallbackNever(callback) {
  console.log("invokesCallbackNever doing something");
}
invokesCallbackAtEnd(printsSomething); console.log("---");
invokesCallbackAtStart(printsSomething); console.log("---");
invokesCallbackAtStartAndEnd(printsSomething); console.log("---");
invokesCallbackNever(printsSomething); console.log("---");

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

首先执行回调函数

为什么javascript回调函数没有执行?

为什么在异步函数中未执行带有回调的函数?

为什么Node.js不执行回调函数?

为什么在事件回调之前执行间隔函数?

为什么不执行$ .ajax()的.always方法回调函数?

回调函数忽略其他验证规则并首先执行

setState 方法中的回调函数什么时候执行?

Javascript:为什么不能在回调函数中获取变量?

ajax回调函数javascript中的执行顺序混乱

为什么“ this”指向回调函数中的“ window Object”?

Javascript:为什么具有全局执行上下文的回调函数可以访问作用域变量?

为什么我不能在我的password.js本地策略回调中创建和执行函数?

为什么AWS Lambda函数在执行回调函数之前完成?

JavaScript回调函数未按预期执行

为什么我的回调不是函数?

为什么存在回调函数?

jQuery中首先出现的.always()或.then()回调是什么?

为什么在内核模式下执行回调函数不好?

为什么要在开始时执行动画的回调函数(完成)?

谁能知道为什么回调函数稍后执行?

javascript-寻求令人满意的解释,为什么在回调中需要使用匿名函数包装器

为什么未在JavaScript中悬挂回调函数?

为什么函数首先在console.log中执行?

在JavaScript中通过回调执行方法

为什么 JavaScript [].forEach(() => {}); 回调阻塞了下一行要执行

为什么回调中的此代码在页面加载时执行?

为什么我的回调消息在另一个线程中执行?

如果函数是值,为什么回调函数不能是变量?