setTimeout有最小时间间隔(4ms-16ms),因此即使你设置setTimeout(func,1)也不会在一毫秒之后执行,而是在最小时间间隔之后执行,比如4毫秒之后。
setTimeout 0作用:
- 实现javascript的异步;正常情况下javascript都是按照顺序执行的。但是我们可能让该语句后面的语句执行完再执行本身,这时就可以用到setTimeout延时0ms来实现了。如:
alert(1);
setTimeout("alert(2)", 0);
alert(3);
虽然延时了0ms,但是执行顺序为:1,3,2这样就保证setTimeout里面的语句在某一代码段中最后执行。
- 在事件中,setTimeout 会在其完成当前任何延宕事件的事件处理器的执行,以及完成文档当前状态更新后,告诉浏览器去启用 setTimeout 内注册的函数。举个例子来说这句话的意思,假如当某个事件在页面上建立一个文本框,并给文本框赋值(完成文档当前状态更新),然后将焦点定到文本框,并且选中文本框的内容(后面部分就需要用到setTimeout 延迟0ms实现,否则不好实现)。