javascript是单线程执行的,事件驱动的,可以想象为有一个后台调用队列。
所以setTimeout(fn,0)当时不会执行,只是将fn添加到后台等待运行队列。只有当前代码跑完之后。再执行。
console.log(1); setTimeout(function(){console.log(2);},0); console.log(3);
运行得到132。
应用场景:
用户点击一个元素,让令一个输入框获得焦点。
$('p').mousedown(function(){setTimeout(function(){$(":text").focus();},0);});
当然这种情况还可以使用label 的for 属性
<label for="name">name:</label><input type="text" id="name"/>