MDN 说回调是作为参数传递给另一个函数的函数。据我了解,这意味着回调包含在括号内。 这个是链接
但是,我曾经在 Freecodecamp 上看到一篇文章,说回调是 MDN 中类似描述的函数,而回调函数是包含在另一个函数块中的函数。这意味着回调函数充当子函数。
我错了还是两个来源之间有些混淆?
回调是 ANY 函数,它作为参数传递给另一个函数并且意味着被 回调,在 receiver 函数内部的某处调用。剩下的就不是那么重要了。您可以将函数分配给变量并将变量作为回调传递,因为在 JS 函数中是第一类对象,
Function
类/函数的实例。
回调是作为参数传递给另一个函数的函数。回调函数的主体可以驻留在全局范围内或其他函数或类方法中。
例如:
const callback = () => console.log('Hello, world');
setTimeout(callback, 1000);
在这种情况下,回调的主体在全局空间中定义,并作为参数传递给
setTimeout
。
第二个选项:
const startMyTimer = () => {
const callback = () => console.log('Hello, world');
setTimeout(callback, 1000);
};
在这种情况下,回调在另一个函数的主体中定义,
startMyTimer
,并作为参数传递给setTimeout
.
第三个选项:
const startMyTimer = () => {
setTimeout(() => console.log('Hello, world'), 1000);
};
这里回调的主体在
setTimeout
函数调用中声明并作为参数传递给它。
如果有帮助,请告诉我。
在另一个函数范围内定义的函数称为闭包
function outer() {
let str1 = "Hello, "
return function inner() {
return str1 + "world!"
}
}
console.log(outer()())
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Closures
作为参数传递给另一个函数的函数称为回调
https://developer.mozilla.org/zh-CN/docs/Glossary/Callback_function
function one() {
return " world!"
}
function two(callback) {
return "hello" + callback()
}
console.log(two(one))