回调函数和在另一个函数中调用一个函数有什么区别?
There is any difference between callback function and calling a function inside another function?
举个例子:
function foo(callback){
callback();
baz();
}
function baz() {
console.log('Hello from baz');
}
foo(baz);
看起来他们在做同样的任务。或者回调和在另一个函数中调用一个函数是一回事?
基本上,它们做的是一样的,但是回调非常有用,因为您可以用许多不同的回调调用同一个函数。这使您的 foo
函数更具可重用性。
在您的示例中,两种方法的作用相同。
但是,您可以将不在函数范围内的函数作为参数传递。
例如
function foo(callbackFn){
callbackFn();
// function test is undefined here, since it was declared in another scope
}
function bar(){
// test is only available in bar's scope
function test(){
console.log("test");
}
foo(bar);
}
除非您没有按照回调的应有方式使用回调。回调应该从先前的函数中获取中间结果。这是一个例子
function add (a, b) {
return a + b;
}
function subtract (a, b) {
return a - b;
}
这是回调
function doLater (val) {
if (val > 0) {
console.log("positive");
} else if (val ==) {
console.log("zero");
} else console.log ("negative");
}
function doOp (a, b, mathOp, callback) {
var res = mathOp(a,b);
callback(res);
}
doOp (2,3, add, doLater);
对比
doOp (2,3,subtract, doLater);
举个例子:
function foo(callback){
callback();
baz();
}
function baz() {
console.log('Hello from baz');
}
foo(baz);
看起来他们在做同样的任务。或者回调和在另一个函数中调用一个函数是一回事?
基本上,它们做的是一样的,但是回调非常有用,因为您可以用许多不同的回调调用同一个函数。这使您的 foo
函数更具可重用性。
在您的示例中,两种方法的作用相同。
但是,您可以将不在函数范围内的函数作为参数传递。 例如
function foo(callbackFn){
callbackFn();
// function test is undefined here, since it was declared in another scope
}
function bar(){
// test is only available in bar's scope
function test(){
console.log("test");
}
foo(bar);
}
除非您没有按照回调的应有方式使用回调。回调应该从先前的函数中获取中间结果。这是一个例子
function add (a, b) {
return a + b;
}
function subtract (a, b) {
return a - b;
}
这是回调
function doLater (val) {
if (val > 0) {
console.log("positive");
} else if (val ==) {
console.log("zero");
} else console.log ("negative");
}
function doOp (a, b, mathOp, callback) {
var res = mathOp(a,b);
callback(res);
}
doOp (2,3, add, doLater);
对比
doOp (2,3,subtract, doLater);