在下面的例子中。lname是fname函数内的回调函数。执行时,第一个输出是史密斯和比利。根据我的理解,一旦 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] 删除。
我来说两句