JavaScript程序设计-JavaScript运行原理(拓展).pdf
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
JavaScript是一种广泛应用于网页和网络应用的脚本语言,它的运行原理独特,不同于传统的编译型语言。在JavaScript中,代码不需要预编译成字节码或机器码,而是直接在浏览器环境中解释执行。整个JS运行过程可以分为编译和执行两个阶段。 1. 编译阶段: 当JavaScript控制器遇到可执行的代码时,例如在HTML文件中的`<script>`标签内的代码,会创建一个执行上下文(Execution Context,简称EC)。执行上下文是JavaScript执行环境的基础,它包含了变量对象(Variable Object,VO)、作用域链(Scope Chain)以及`this`的指针。在这个阶段,变量对象会被创建,其中包含函数声明、变量声明(包括函数参数),并且函数的`[[scope]]`属性会被设置,指向当前的作用域链。 2. 执行阶段: 在执行阶段,变量对象会被初始化,即对变量进行赋值,执行函数调用等操作。执行上下文会按照先进后出的原则存储在函数调用栈中,栈底始终是全局执行上下文,只有在浏览器关闭时才会消失。每次函数调用都会创建一个新的执行上下文并压入栈顶,当函数执行完毕,其执行上下文会被弹出,控制权返回给上一级执行上下文。 执行上下文有三种类型: - 全局执行上下文:在代码开始执行时创建,只有一个全局执行上下文。 - 函数执行上下文:每次函数被调用时创建。 - `eval()`执行上下文:通过`eval()`函数执行的代码会产生一个特殊的执行上下文,但不推荐使用`eval()`,因为它可能带来安全问题和性能下降。 在变量对象的创建过程中,首先会为函数参数创建`arguments`对象,然后查找并创建函数声明和变量声明。如果存在同名的函数和变量,函数会覆盖变量,因为函数具有更高的优先级。在执行阶段,变量和函数的定义会被解析,变量会被赋予初始值,函数则可以被调用。 例如以下代码: ```javascript var g_name = "tom"; var g_age = 20; function g_fn(num) { var l_name = "kity"; var l_age = 18; function l_fn() { console.log(g_name + '===' + l_name + '===' + num); } } g_fn(10); ``` 在这段代码中,全局执行上下文`G_EC`的变量对象`VO`将包含`g_name`、`g_age`和`g_fn`。当调用`g_fn(10)`时,一个新的函数执行上下文`g_fn_EC`会被创建,包含局部变量`l_name`、`l_age`和内部函数`l_fn`。`g_fn_EC`的作用域链会包含全局执行上下文的`VO`,以便在执行期间查找变量和函数。 JavaScript的运行机制涉及了执行上下文的创建和管理,以及变量对象的构建和执行阶段的变量赋值与函数调用。理解这些概念对于深入学习JavaScript至关重要,有助于优化代码性能和避免潜在的错误。
- 粉丝: 375
- 资源: 1万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 机械手自动排列控制PLC与触摸屏程序设计
- uDDS源程序publisher
- 中国风格, 节日 主题, PPT模板
- 生菜生长记录数据集.zip
- 微环谐振腔的光学频率梳matlab仿真 微腔光频梳仿真 包括求解LLE方程(Lugiato-Lefever equation)实现微环中的光频梳,同时考虑了色散,克尔非线性,外部泵浦等因素,具有可延展
- 企业宣传PPT模板, 企业宣传PPT模板
- jetbra插件工具,方便开发者快速开发
- agv 1223.fbx
- 全国职业院校技能大赛网络建设与运维规程
- 混合动力汽车动态规划算法理论油耗计算与视频教学,使用matlab编写快速计算程序,整个工程结构模块化,可以快速改为串联,并联,混联等 控制量可以快速扩展为档位,转矩,转速等 状态量一般为SOC,目