JavaScript 文件的初始运行
Initial run through of a JavaScript file
在Javascript中,每当调用异步操作/事件时,都会创建一个消息以及操作/事件的回调函数(仅在操作/事件完成后运行的函数)。
当操作/事件完成(或触发)时,消息将移动到消息队列中。此消息队列不断轮询(此轮询称为"事件循环"),当在队列中找到消息时,消息的回调将放在调用堆栈上并运行。然后,我们返回到事件循环,要么等待新消息,要么抓取队列中的下一条消息并运行其回调。
我的问题是:在所有这些之前,当 JavaScript 文件首次运行时,在事件循环启动之前,所有内容是否都在同一个调用堆栈上运行?
这是一个非常有趣的问题。毫无疑问,有人会提供更好的解释,因为我不完全了解发生了什么,但根据我的测试,我确定你的问题的答案是否定的。
以以下代码为例:
alert( 'start' );
var cats = document.getElementById( 'cats' );
cats.addEventListener('click', function() {
alert( 'cats' );
});
cats.click();
alert( 'finish' );
警报按如下方式触发:start
、cats
、finish
。cats
出现在finish
之前的事实证明消息是在执行代码时添加到事件循环中的,而不是在执行代码之后。
http://jsfiddle.net/3bm2pz86/
相关文章:
- 使用压缩的JavaScript文件(不是运行时压缩)
- Javascript运行php文件,然后下载文件
- 从Chrome扩展名中的popup.html文件在background.js文件中运行一个函数
- 如何从“”运行url;.js”;文件
- 如何使用Gmail运行.js文件
- 如何运行从TFS获取项目的windows脚本文件
- 在Node Webkit应用程序中从DOM单击按钮时运行批处理文件
- 是否可以从javascript文件中将量角器作为模块运行
- Meteor发布/订阅无法从服务器文件夹中运行
- 如何显示由ajax调用运行的PHP文件的echo
- 通过Wordpress中的jquery调用运行php文件
- 从JavaScript文件运行Firebug Lite
- 如何在Grunt.js中观察多个文件,但只在更改的文件上运行任务
- 如何在 node.js 中创建和运行文件
- 如何在使用 nsIProcess 运行文件时隐藏命令提示符窗口.bat
- 文件下载完成后运行文件
- 打开程序但不运行文件的HTA页面
- React-只运行文件一旦外部js文件加载(gapi未定义)
- 从终端运行文件代码(启动本地网站)
- 运行文件.未附加的HTML元素的getElementById