var i=0;
setTimeout("i=i+1;alert('A1')",1000);
setTimeout("alert('A2')",1000);
setTimeout(alert('A3'),1000);
为什么第二行的代码执行的时候不延迟呢?
而第一行的代码,貌似就没有执行
var i=0;
setTimeout("i=i+1;alert('A1')",1000);
setTimeout("alert('A2')",1000);
setTimeout(alert('A3'),1000);
为什么第二行的代码执行的时候不延迟呢?
而第一行的代码,貌似就没有执行
先分析最后一行:
setTimeout(alert('A3'),1000);
这样写alert('A3')
会立即执行,没有起到定时器的作用,除非把它放在匿名函数,或者向前面一样包裹成字符串(不推荐)。
前面两行代码起到了定时器的作用,js 会在一秒后把这两个回调函数加入到执行队列中,然后执行它们,理解这句话是关键所在。所以, 并不是说,过了一秒alert('A1')
,然后静静的等一秒,再alert('A2')
,而是,等一秒之后,它们会按照顺序同时执行。
setTimeout()第一个参数应该是function才对,你这什么都往里面加,太奇怪了,
var a=setTimeout(function(){alert('A3')},5000);
13 回答12.8k 阅读
7 回答2k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答918 阅读✓ 已解决
6 回答1.1k 阅读
2 回答1.3k 阅读✓ 已解决
没看明白题目的意思。三个
setTimeout
是同时执行的,然后根据各自的延时时间来执行function语句,因为延时时间相同,所以两个语句同时执行(不过
alert
会阻断当前js执行所以弹窗还是分了先后。如果你是想要第一句执行完成后延时1000ms再执行第二句,那需要在第一个
setTimeout
的函数体内调用第二个setTimeout
语句。例如: