var tmp = setInterval(func, 100)执行了以后是将tmp以及func同时一直放入内存,还是只将tmp放进内存,然后再每100MS时将func放进内存调用,并且在调用完毕后又销毁func?

解决方案 »

  1.   

    var tmp = setInterval(func, 100);
    执行的时候tmp放入内存,然后每100ms将func函数放到线程队列末端等待执行,当线程到了执行func时,func放到内存,执行完毕后销毁
      

  2.   

    tmp是setInterval() 返回的ID, 它只是一个变量而已,是一直在内存中的,直到出了作用域。你可以在任何时刻,执行clearInterval(tmp)来取消周期执行func。
    func是一个方法的引用,方法的引用怎么可能执行完一次就销毁呢? 例如:
    function func(){}; 当你间隔了100毫秒后,执行了一次func,如果销毁的话,那现在我就不能再通过func()来执行这个函数了么?
    所以这两者都是在内存中的,不会因为每100ms执行一次而销毁。
      

  3.   

    当函数执行,就是func(),会在内存中开辟一块内存区域用以保存函数的参数、局部变量以及其他必要信息,当执行完毕,内存会被释放,也许不应该说func销毁,应该是说func执行完毕时,占用的内存会被释放
      

  4.   

    同意你的观点。你说的是函数执行和执行完毕时的内存使用情况。函数执行都是这样的,这个和是不是setInterval来周期调用是没有关系的。不过楼主大概也应该清楚啦,目的达到。