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

关于js回调函数的一些问题

关于js回调函数的一些问题

千万里不及你 2018-09-13 14:41:42
var a = 0,     b = 20function add(num,callback){       setTimeout(function(){            if(num==10||num==30){                  callback&&callback()             }else{                   num++                   console.log(num)                   add(num,callback)             }       },1000) } add(a,add(b))这段代码是想先让a加到10,然后让b加到30。但是运行结果是1 21 2 22 3 23...,这个函数的执行流程不太理解,另外我把最后一句代码修改成这样,执行效果就是正确的。刚刚学js不久,想不出这个问题怎么回事,恳请大家帮我解答这个问题。add(a,function(){      add(b)})//1 2 3 .... 10 11 12 13...30
查看完整描述

1 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

你可以从你的结果就可以看出 add(num,callback)的时候callback就执行了。
回调函数的callback是不能加()的,或者写一个匿名函数把加括号的函数包起来。
如:add(a,callback),但是你的callback是其本身,所以就需要像你的第二种写法,将起包起来,相当于传入函数整体。
当需要到callback时才执行,不能像第一种写法,执行add的时候就已经把callback执行了。

查看完整回答
反对 回复 2018-10-17
  • 1 回答
  • 0 关注
  • 498 浏览
慕课专栏
更多

添加回答

举报

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