js执行顺序问题

lxiaor98 2015-04-14 09:18:21
请教一下js的执行顺序,比如说要等待5秒再执行下一句代码,用下面的写法不起作用:

<script type="text/javascript">
document.write("hello world");
setTimeout(function(){},5000);
document.write("test");
</script>

这样,最后一个document.write方法一下子就被执行了。

但是如果把最后一个document.write放在setTimeout里面的回调函数里面,就可以。请问这是什么机制?
...全文
147 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
z22708387 2015-04-15
  • 打赏
  • 举报
回复
setTimeout(function(){},5000); 这句话是不会停止5秒的。 js是从上到下执行。 你可以理解为 setTimeout(function(){},5000); 只是一个闹钟。到点才会执行。而并不代表时间停止。
天际的海浪 2015-04-14
  • 打赏
  • 举报
回复
引用 4 楼 lxiaor98 的回复:
[quote=引用 3 楼 jslang 的回复:] setTimeout方法不是暂停当前程序进程的执行, 而是要等到当前程序进程执行完毕之后等待设定的时间,到时间后会再开启一个新的程序进程来执行回调函数 你也可以把setTimeout方法理解成一个定时自动触发的“事件”
嗯,这个解释对于第二种写法我有点明白了。但是第一种写法还是有些不太明白,按道理说代码不是一行行往下执行的?在一个进程内执行,也应该先执行完一行,再执行另一行吧,这个还是不太明白为何settimeout不起作用。[/quote] 代码是一行行往下执行的,但也有例外啊,那就是函数的定义,函数在定义时不会执行函数内的代码吧,要在调用函数时才会执行吧。 在执行到setTimeout()的时候只是向浏览器注册一个定时器。就类似于函数的定义。 一个函数的执行要主动调用。 一个定时器的执行,要等到当前进程的代码执行完毕之后,等待设定的时间,到时间后才执行
lxiaor98 2015-04-14
  • 打赏
  • 举报
回复
引用 3 楼 jslang 的回复:
setTimeout方法不是暂停当前程序进程的执行, 而是要等到当前程序进程执行完毕之后等待设定的时间,到时间后会再开启一个新的程序进程来执行回调函数 你也可以把setTimeout方法理解成一个定时自动触发的“事件”
嗯,这个解释对于第二种写法我有点明白了。但是第一种写法还是有些不太明白,按道理说代码不是一行行往下执行的?在一个进程内执行,也应该先执行完一行,再执行另一行吧,这个还是不太明白为何settimeout不起作用。
天际的海浪 2015-04-14
  • 打赏
  • 举报
回复
setTimeout方法不是暂停当前程序进程的执行, 而是要等到当前程序进程执行完毕之后等待设定的时间,到时间后会再开启一个新的程序进程来执行回调函数 你也可以把setTimeout方法理解成一个定时自动触发的“事件”
lxiaor98 2015-04-14
  • 打赏
  • 举报
回复
引用 1 楼 slwsss 的回复:
延迟执行
这个我不明白的地方是代码不是一行行往下解析的吗?不是应该执行了等待5秒的代码后,才执行最后一个document.write的吗?为何最后一个一下就出来了?感觉这样等待5秒的那句没有被执行。
slwsss 2015-04-14
  • 打赏
  • 举报
回复

87,922

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧