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

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

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

湖上这个代码是不是有问题呢?这样调用doSomething,里面传入的函数会被当做第一个参数args,而不会映射到第二个形参callback啊,岂不是不对?费解
展开
 我来答
房雁凡s9
2013-04-28 · TA获得超过1360个赞
知道小有建树答主
回答量:504
采纳率:100%
帮助的人:503万
展开全部

调用函数时, 传递入的参数与顺序必须按照函数声明来排列, 所以调用doSomeThing时:

function doSomething(args,callback){
   somethingComplicated(args);
   callback();
}
//第一个参数如果不需要传递,可设置为null
//function onEnd(){} 这种方法通常是声明拦滚一个函数, 将函数作简森余为参数传递可直接传递函数名称,或者传递匿名函数
//传递函数名称
function onEnd(){
//code
}
doSomething(null, onEnd);
//传递匿春厅名函数
doSomething(null,function(){
   compute();
});
百度网友39549ba
2013-04-28 · 超过14用户采纳过TA的回答
知道答主
回答量:32
采纳率:0%
帮助的人:24.6万
展开全部

你可以改写猜缓doSomething函数的实现,如穗码模果第一个入参是函数就认为是回调模芹函数,要看你想实现什么功能。

function doSomething(args,callback){
    somethingComplicated(args);
    if(arguments.length==1 && 'function'==typeof args){
        callback = args;
    }
    if(callback) callback();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式