JavaScript的特点一般都知道的就是解释执行,逐行执行,就是从上到下依次执行。

JavaScript的执行之前,其实还是有一些操作的,只是没有表现出来

JavaScript的执行过程:

  1、语法检测  首先是大致查看有没有基本的语法错误。比如说中文、关键字错误等等

  2、词法分析(预编译)

  3、逐行执行

  预编译的过程

    1、先全局  直接是 script 标签里的代码,函数除外

      预编译时

        1、先模拟一个GO(global object) = { };

        2、分析变量声明(var)  若有则:GO = {变量名1:undefined,变量名2:undefined,……};若遇到同名的就覆盖

        3、分析函数声明(function)  若有则:GO = {变量名1:undefined,变量名2:undefined,……,函数名1:函数体1,函数名2:函数体2,……};若遇到同名的就覆盖

        4、逐行执行  有赋值就赋值到GO里相应的属性

    2、再局部  在逐行执行时 若遇到函数调用,该函数会生成自己的作用域AO(active object) = { }

        1、模拟一个AO = { }

        2、分析参数  若有则:AO = {形参 1: 实参1,形参 2: 实参2,…… }

        3、分析变量声明  若有则:AO = {形参 1: 实参1,形参 2: 实参2,…… 变量名1:undefined,变量名2:undefined,……};若遇到同名的就跳过

        4、分析函数声明  若有则:AO = {形参 1: 实参1,形参 2: 实参2,…… 变量名1:undefined,变量名2:undefined,……,函数名1:函数体1,函数名2:函数体2,……};若遇到同名的就覆盖

        5、逐行执行  有赋值就赋值到AO相应的属性,若遇到AO里没有的要赋值的,就向上一级找,一直找到GO,若GO没有,就添加到GO。

    基础步骤就是这,一步一步的来,就没有什么大问题。

浏览器解析JavaScript的原理的更多相关文章

  1. 浏览器解析JavaScript原理

    1.浏览器解析JavaScript原理特点: 1.跨平台 2.弱类型 javascript 定义的时候不需要定义数据类型,数据类型是根据变量值来确定的.    var a = 10; 数字类型    ...

  2. 浏览器中JavaScript执行原理

    本章我们讨论javascript在浏览器中是如果工作的,包括:下载.解析.执行的全过程.javascript的这些讨人嫌的地方我们是知道的: i.需要串行下载 ii.需要解析 iii.需要串行执行 而 ...

  3. JavaScript运行原理解析

    原文:1.http://blog.csdn.net/liaodehong/article/details/50488098 2.Stack的三种含义 (阮一峰) 3. http://lib.csdn. ...

  4. How Javascript works (Javascript工作原理) (十四) 解析,语法抽象树及最小化解析时间的 5 条小技巧

    个人总结:读完这篇文章需要15分钟,文章介绍了抽象语法树与js引擎解析这些语法树的过程,提到了懒解析——即转换为AST的过程中不直接进入函数体解析,当这个函数体需要执行的时候才进行相应转换.(因为有的 ...

  5. 解析Javascript事件冒泡机制

    本资源引自: 解析Javascript事件冒泡机制 - 我的程序人生 - 博客频道 - CSDN.NET http://blog.csdn.net/luanlouis/article/details/ ...

  6. 深入理解JavaScript Hijacking原理

    最近在整理关于JavaScript代码安全方面的资料,在查关于JavaScript Hijacking的资料时,发现关于它的中文资料很少,故特意整理一下. 一.JavaScript Hijacking ...

  7. JavaScript内部原理实践——真的懂JavaScript吗?(转)

    通过翻译了Dmitry A.Soshnikov的关于ECMAScript-262-3 JavaScript内部原理的文章, 从理论角度对JavaScript中部分特性的内部工作机制有了一定的了解. 但 ...

  8. How Javascript works (Javascript工作原理) (三) 内存管理及如何处理 4 类常见的内存泄漏问题

    个人总结: 1.两种垃圾回收机制: 1)引用标记算法:如果检测到一个对象没有被引用了,就清除它. ***这种算法不能处理循环引用的情况*** 2)标记—清除算法:从根(全局变量)开始向后代变量检测,任 ...

  9. How Javascript works (Javascript工作原理) (二) 引擎,运行时,如何在 V8 引擎中书写最优代码的 5 条小技巧

    个人总结: 一个Javascript引擎由一个标准解释程序,或者即时编译器来实现. 解释器(Interpreter): 解释一行,执行一行. 编译器(Compiler): 全部编译成机器码,统一执行. ...

随机推荐

  1. [dev][ipsec] 什么是xfrm

    简介: http://nody-techhome.blogspot.com/2008/09/xfrm-overview.html (没啥用) 内核xfrm.ipsec的流程.写的特别清晰明了. htt ...

  2. JAVA RPC(一)RPC入门

    为什么要写这个RPC 市面上常见的RPC框架很多,grpc,motan,dubbo等,但是随着越来越多的元素加入,复杂的架构设计等因素似使得这些框架就想spring一样,虽然号称是轻量级,但是用起来却 ...

  3. 2018-2019-2 网络对抗技术 20165317 Exp2 后门原理与实践

    2018-2019-2 网络对抗技术 20165317 Exp2 后门原理与实践 基础问题回答 例举你能想到的一个后门进入到你系统中的可能方式? 下载免费应用的时候会有绑定木马. 浏览某些网页时会有内 ...

  4. LG1081 开车旅行

    题意 城市\(i\)的海拔高度为\(H_i\)(各不相同).定义距离为海拔差的绝对值 小\(A\)和小\(B\)轮流开车.从\(S\)起,一直向东行驶. 小\(A\)会选择第二近的城市作为目的地.小\ ...

  5. 2018-2019-2 网络对抗技术 20165236 Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165236 Exp3 免杀原理与实践 一.实践内容(3.5分) 1.1 正确使用msf编码器(0.5分),msfvenom生成如jar之类的其他文件(0.5 ...

  6. linux发展

    硬件 1946年诞生于宾夕法尼亚州,占地170平米,重量达到30吨,名字叫做ENIAC(electronic numerical integrator and calculator)主要作用是为美国国 ...

  7. TestFlight 测试

    问题1:iOS提交TestFlight测试显示缺少合规证明 解决:有的时候testFlight会显示@“缺少合规证明” 最简单的解决办法就是点击文字前边的黄色标识符,会询问你是否加密,选择相应选项就可 ...

  8. JavaScript 区分中英文字符的两种方法: 正则和charCodeAt()方法

    正则无疑是最强大的判断各种条件的方法, 最近也在研习它, 虽然枯燥, 但仍有乐趣. 用它来判断一个双字节的中文字符也是轻而易举地. 而判断中文字符,  简单且执行效率高. regExpForm.onb ...

  9. Cocos Creator 动态改变sprite图片

    首先将存放图片最外层文件夹命名为resources changeBj: function(){ var url = 'globalUI/video/gVideoPlayClick'; var _thi ...

  10. Python科学计算学习之高级数组(二)

    代码性能和向量化 背景:Python是一种解释型的编程语言,基本的python代码不需要任何中间编译过程来得到机器代码,而是直接执行.而对于C.C++等编译性语言就需要在执行代码前将其编译为机器指令. ...