浏览器如何解析和解释JavaScript代码?

16
一个浏览器如何解析从文件或内联加载的JavaScript?我试图了解浏览器的核心操作。当页面加载并且有对外部文件的<script>引用以及页面上的实际JavaScript时,会发生什么情况?是否有好的文章可以参考?

1
不同的浏览器使用不同的 JavaScript 引擎,例如 V8 或 SpiderMonkey。 - Incognito
我想他们遵循了一些标准。有一些相似之处。 - dev.e.loper
9
在进行解释之前,你肯定需要先解析它。 - Claudiu
3
那个标准是 ECMA-262:http://www.ecma-international.org/publications/standards/Ecma-262.htm。 - pimvdb
没有点踩,但不喜欢那些问题太宽泛的提问,比如“技术X是如何工作的?”因为在这种情况下有很多不同的实现方式(例如浏览器)。 - Filburt
显示剩余3条评论
2个回答

16

这是在ECMAScript标准中定义的。

首先,源文本(位于<script>标签之间的内容)会根据语言的词汇语法转换为一系列标记:

ECMAScript程序的源文本首先被转换为一系列输入元素,它们可以是标记、行终止符、注释或空格。源文本从左到右扫描,不断地将最长的字符序列作为下一个输入元素。

请参阅:http://es5.github.com/#x7

那些标记被视为一个“程序”,然后根据该语言的句法语法进行评估,该语法在ECMAScript标准的第11至14章中定义。

ECMAScript的句法语法在第11、12、13和14条款中给出。该语法具有由词汇语法定义的ECMAScript标记作为其终端符号(5.1.2)。它定义了一组产生式,从目标符号“Program”开始,描述了如何形成句法正确的ECMAScript程序的标记序列。

请参阅:http://es5.github.com/#x5.1.4

它始于第14章:http://es5.github.com/#x14


请注意,每个<script>元素表示一个单独的JavaScript程序。
请阅读此处:在浏览器中为单个网页执行多少个JavaScript程序?


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接