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

为什么要用setTimeout

为什么要用setTimeout,这样写也可以arguments.callee(List,callback),是保存变量吗

正在回答

5 回答

是用来保护callback被回收,当函数执行完了变量就会被回收,用了setTimeout等25ms后才会被回收

1 回复 有任何疑惑可以回复我~

不是。setTimeout只是延时,没有其它任何功能。而里面的callback函数是通过闭包来传值的。

0 回复 有任何疑惑可以回复我~

function Aaron(List, callback) {

  (function() {

    var task;

    task = List.shift();

      task(); //执行函数

    

    if (List.length > 0) { //递归分解

      arguments.callee(List);

    } else {

      callback()

    }

  }())

}

我测试了,不加setTimeout也可以执行,不过最后显示的执行顺序如下:

a

b

c

callback

callbacksA

callbacksB

所以我猜测这个setTimeout只是为了演示而加的,并不是一定要加

0 回复 有任何疑惑可以回复我~

我尝试了 ,不加setTimeout,程序会曝出 callback 没有定义。想想也是,callee 的时候,只传递了,一个参数。

那为什么,callback 在 setTimeout 就可以保留了。因为有延迟,所有,第一次调用的局部变量,还是存在的。

所以可以调用?

0 回复 有任何疑惑可以回复我~
#1

yuqingzhijie3596863

怎么可能,你直接(func())()就可以了
2017-12-04 回复 有任何疑惑可以回复我~

我只知道setTimeout()是一个只执行一次的延迟函数,而setInterval()是一个可以执行多次的延迟函数。

同学,你给取的信息有限,我有些不知道你说的是什么问题。

还有,我不知道callee()函数是干嘛的

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么要用setTimeout

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信