for (var i = 1; i <= 10; i++) { setTimeout(function () { alert(i); },2000); }
因为js是单线程的语言,所以在使用setTimeout方法时,程序会先执行其他的代码,把延时函数放到任务列队中,当到了指定的时间后,在查看当前的任务列队是否是空的,如果是空的则会立即执行,如果不是,则会等待前面的代码执行完成之后,才开始执行。
因此,上面的代码中,始终弹出的i值是11,而不是从1开始弹出。
var timeOutId= setTimeout(function () { alert("aaa"); }, 2000); clearTimeout(timeOutId);
调用此方法时,会返回一个数值ID,利用这个ID可以取消尚未执行的调用计划。
setInterval方法和上面的方法用法类似,不再解释。