JavaScript函数的执行过程
来源:才华咖 本文已影响9K人
来源:才华咖 本文已影响9K人
1. 每一个JavaScript函数都是Function对象的一个实例, 它有一个仅供JavaScript引擎存取的内部属性[[Scope]]. 这个[[Scope]]存储着一个作用域的集合, 这个集合就叫”作用域链”, 集合中存储着”可变对象”VO或”活动对象”AO(AO比VO多this和arguments属性).
2. 当函数被创建后, 其父级作用域的作用域链中的所有可变对象会被加入到它的[[scope]]中(如果父作用域是全局, 那么当前函数的作用域链中就只会加入一个全局对象).
3. 当函数被执行时, 函数的执行环境会被推入一个环境栈中:
4.此时进入函数的变量初始化阶段, 此阶段会确定函数内部: this值, 函数的参数, 函数的声明, 变量的声明, 以及arguments. 根据这些值组成当前函数的活动对象AO, 之后会将AO对象保存到当前函数作用域链的.首位.
注意: AO按如下顺序填充:
1.函数参数(若有传参, 会被赋值, 若未传参, 初始化值为undefined) 优先级第二
2.函数声明(若发生命名冲突, 会覆盖) 优先级最高
3.变量声明(初始化变量值为undefined, 若发生命名冲突, 会忽略) 优先级第三
2.然后就到了函数的执行阶段, 此阶段当前函数中使用到的所有变量和函数声明都会从当前函数的[[Scope]]作用域链中查找, 根据作用域链中对象的位置首先会查找当前函数的AO对象, 如果没有再查找上层对象, 最后找到全局对象, 如果都没有则会报错(变量未定义).
javascript字符串对象常用api函数小结
Javascript 函数的学习
JavaScript中push(),join() 函数实例详解
javascript中的return和闭包函数
JavaScript 函数式编程实践
编写JavaScript函数
JavaScript在Android的WebView中parseInt函数转换不正确
浅析jQuery 遍历函数javascript
javascript中的match函数用法简介
Javascript入门学习js函数
java与javascript之间json格式数据互转详解
javascript函数详解
javascript写的异步加载js文件函数
Javascript基础教程之数组array
Javascript时间格式format函数的两种使用方法
使用JavaScript实现Java的List功能
JavaScript匿名函数实例分析
关于javascript使用isNaN()函数判断变量是否为数字
JavaScript中Function函数
JavaScript函数的执行过程
JavaScript精炼之构造函数
JavaScript小实验之函数引用
javascript中各种函数的使用方法
分析JavaScript函数的调用模式
c#和javascript函数相互调用示例
JavaScript中常用的函数类型
JavaScript中调用函数的4种方式
Javascript函数的定义和用法分析
javascript中普通函数的使用介绍
JavaScript日期时间格式化函数
有关javascript在IE下trim函数无法使用的解决方法
javascript 回调函数详解参考
Javascript工程师岗位职责
旅行的过程的作文
探寻Javascript执行效率问题
有关JavaScript 字符串与数组转换函数
行政执法全过程记录工作总结
关于JavaScript中isPrototypeOf函数作用和使用实例
最常用的20个javascript方法函数
javascript函数到底是什么