请帮我理解关于回调的两件事.它们是我在强大的C#背景下无法掌握的最后一个JS怪异之处.
首先,为什么我们要将函数作为参数发送.我知道我们可以,但为什么.我会试一试我能想到的最简单的例子.因此,根据JS开发人员的说法,应该是这样的:
function simpleCallbackFn(){}
function simpleCallerFn(cb){ cb();}
simpleCallerFn(simpleCallbackFn);
为什么不这样做呢:
function simpleCallbackFn(){} // Same as before
function simpleCallerFn(){
simpleCallbackFn();
}
我们不传递回调,我们只是从调用者内部调用它.它在完全可见的范围内.我们就打第一个电话.
simpleCallerFn();
从调用者函数内部向我调用"回调"函数应该完全可以,并达到相同的结果.
第二,假设我需要使用带有参数的回调
function simpleCallbackFn(anArgument){}
function simpleCallerFn(cb){
cb(anArgument);
}
我们知道这是行不通的
simpleCallerFn (simpleCallbackFn(anArgument));
个
根据JS开发者的说法,应该是这样的:
simpleCallerFn (() => simpleCallbackFn(anArgument));
个
我在想为什么不:
function simpleCallbackFn(anArgument){}
function simpleCallerFn(anArgument, cb){
cb(anArgument);
}
然后进行初始呼叫,如下所示:
simpleCallerFn(anArgument, simpleCallbackFn);
然后结合我的第一种和第二种方法:
function simpleCallbackFn(anArgument){}
function simpleCallerFn(anArgument){
simpleCallbackFn(anArgument);
}
simpleCallerFn(anArgument);
请.那个脚本让我感觉就像在怪胎马戏团一样.
谢谢