为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

猛跑小猪 2019-02-13 15:07:48
function doSomething(args,callback){somethingComplicated(args);callback();}doSomething(function onEnd(){compute();});湖上这个代码是不是有问题呢?这样调用doSomething,里面传入的函数会被当做第一个参数args,而不会映射到第二个形参callback啊,岂不是不对?费解
查看完整描述

2 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

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

123456789101112131415function doSomething(args,callback){   somethingComplicated(args);   callback();}//第一个参数如果不需要传递,可设置为null//function onEnd(){} 这种方法通常是声明一个函数, 将函数作为参数传递可直接传递函数名称,或者传递匿名函数//传递函数名称function onEnd(){//code}doSomething(null, onEnd);//传递匿名函数doSomething(null,function(){   compute();});


查看完整回答
反对 回复 2019-03-17
?
阿晨1998

TA贡献2037条经验 获得超6个赞

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

1234567function doSomething(args,callback){    somethingComplicated(args);    if(arguments.length==1 && 'function'==typeof args){        callback = args;    }    if(callback) callback();}



查看完整回答
反对 回复 2019-03-17
  • 2 回答
  • 0 关注
  • 2146 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信