JavaScript工作原理

浏览器模块大致分为:文档分析模块,JS引擎模块,布局渲染模块。

浏 览器收到返回的HTML页面后,文档分析按照HTML文档的文档流顺序从上到下逐步解析页面结构和信息。HTML文档流是一个网页设计开发中很重要的概 念,布局渲染也按照文档流展现和布局页面元素。当文档分析遇到其它标签时,会交给布局渲染模块,后台绘制(这时还没有展现)。遇 到<script>标签时,会交给JS引擎处理<script>内容。也就是说Javascript的解析顺序就是文档 中<script>标签出现的顺序。

JS引擎执行步骤:

1. JS引擎会先预编译一次,预编译就是创建当前执行环境下的活动对象(当前作用域,可用变量的集合),将当前环境下var申明的变量先初始化为undefined,而function保留字定义的函数的字面量Literals会直接赋给活动对象。

2. JS引擎进入解析执行阶段,从上到下逐行执行。遇到直接变量(1,2,"a")会直接处理;而遇到要解析的变量,会先从活动变量中查找,没有找到的话再从prototype,其次作用域链里查找。

在一个函数还未调用(apply,call,或"()")时,它在JS引擎中只是以字面量Literals的形式储存在对象中(就和字符串一样)。

而当我们调用一个函数时,JS引擎又会在该函数内部按以上两步执行。

参考:http://blog.csdn.net/pusongyang/article/details/7053841

原文地址:https://www.cnblogs.com/orientsun/p/2753258.html