function a(){
console.log("i am a");
};
function b(){
console.log("i am b");
};
function callBack(a,callback){
a();
setTimeout(function(){
callback;
},1000)
};
callBack(a,b());
优先输出 i am b ,也就是b函数先执行了!为什么啊?
但是稍微改下:
function a(){
console.log("i am a");
};
function b(){
console.log("i am b");
};
function callBack(a,callback){
a();
setTimeout(function(){
callback();
},1000)
};
callBack(a,b);
输出就正常了!为什么 ?立即执行
callBack(a,b());
第二个参数你搞错了,b()是执行b函数后将b的返回值作为参数值传入
因为b是函数对象,b()则是执行函数后返回的结果(这里是undefined)。所以第一种方式先执行b(),将返回的结果undefined作为参数调用callback,即执行callback(a,undefined)
当然结果不正确啦。
第一个方法中使用b()作为参数时,此时b()为一个实例,在调用处直接执行了。。。在settimeout中并未执行