JavaScript:将函数作为参数传入,作为回调函数?

function doSomething(args,callback){
somethingComplicated(args);
callback();
}

doSomething(function onEnd(){
compute();
});

湖上这个代码是不是有问题呢?这样调用doSomething,里面传入的函数会被当做第一个参数args,而不会映射到第二个形参callback啊,岂不是不对?费解

猛跑小猪
浏览 2154回答 2
2回答

慕工程0101907

调用函数时, 传递入的参数与顺序必须按照函数声明来排列, 所以调用doSomeThing时:123456789101112131415function doSomething(args,callback){   somethingComplicated(args);   callback();}//第一个参数如果不需要传递,可设置为null//function onEnd(){} 这种方法通常是声明一个函数, 将函数作为参数传递可直接传递函数名称,或者传递匿名函数//传递函数名称function onEnd(){//code}doSomething(null, onEnd);//传递匿名函数doSomething(null,function(){   compute();});

阿晨1998

你可以改写doSomething函数的实现,如果第一个入参是函数就认为是回调函数,要看你想实现什么功能。1234567function doSomething(args,callback){    somethingComplicated(args);    if(arguments.length==1 && 'function'==typeof args){        callback = args;    }    if(callback) callback();}
打开App,查看更多内容
随时随地看视频慕课网APP