JavaScript 函数的执行过程


Posted in Javascript onMay 09, 2016

1. 每一个JavaScript函数都是Function对象的一个实例, 它有一个仅供JavaScript引擎存取的内部属性[[Scope]]. 这个[[Scope]]存储着一个作用域的集合, 这个集合就叫”作用域链”, 集合中存储着”可变对象”VO或”活动对象”AO(AO比VO多this和arguments属性).

2. 当函数被创建后, 其父级作用域的作用域链中的所有可变对象会被加入到它的[[scope]]中(如果父作用域是全局, 那么当前函数的作用域链中就只会加入一个全局对象).

3. 当函数被执行时, 函数的执行环境会被推入一个环境栈中:

1.此时进入函数的变量初始化阶段, 此阶段会确定函数内部: this值, 函数的参数, 函数的声明, 变量的声明, 以及arguments. 根据这些值组成当前函数的活动对象AO, 之后会将AO对象保存到当前函数作用域链的首位.

注意: AO按如下顺序填充:

1.函数参数(若有传参, 会被赋值, 若未传参, 初始化值为undefined) 优先级第二
2.函数声明(若发生命名冲突, 会覆盖) 优先级最高
3.变量声明(初始化变量值为undefined, 若发生命名冲突, 会忽略) 优先级第三
2.然后就到了函数的执行阶段, 此阶段当前函数中使用到的所有变量和函数声明都会从当前函数的[[Scope]]作用域链中查找, 根据作用域链中对象的位置首先会查找当前函数的AO对象, 如果没有再查找上层对象, 最后找到全局对象, 如果都没有则会报错(变量未定义).

以上这篇JavaScript 函数的执行过程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
如何实现动态删除javascript函数
May 27 Javascript
一个可以随意添加多个序列的tag函数
Jul 21 Javascript
3Z版基于jquery的图片复选框(asp.net+jquery)
Apr 12 Javascript
JavaScript Array Flatten 与递归使用介绍
Oct 30 Javascript
jquery 获取dom固定元素 添加样式的简单实例
Feb 04 Javascript
jquery+ajax+C#实现无刷新操作数据库数据的简单实例
Feb 08 Javascript
bootstrap下拉列表与输入框组结合的样式调整
Oct 08 Javascript
BootStrap 可编辑表Table格
Nov 24 Javascript
js实现简单数字变动效果
Nov 06 Javascript
vue 动态改变静态图片以及请求网络图片的实现方法
Feb 07 Javascript
在vue中实现点击选择框阻止弹出层消失的方法
Sep 15 Javascript
浅谈vue 二级路由嵌套和二级路由高亮问题
Aug 06 Javascript
jQuery绑定事件-多种实现方式总结
May 09 #Javascript
js原型链与继承解析(初体验)
May 09 #Javascript
jQuery轻松实现表格的隔行变色和点击行变色的实例代码
May 09 #Javascript
jquery实现表格中点击相应行变色功能效果【实例代码】
May 09 #Javascript
JavaScript中的prototype原型学习指南
May 09 #Javascript
jQuery+CSS实现一个侧滑导航菜单代码
May 09 #Javascript
jQuery实现点击按钮文字变成input框点击保存变成文字
May 09 #Javascript
You might like
很棒的学习jQuery的12个网站推荐
2011/04/28 Javascript
jQuery extend 的简单实例
2013/09/18 Javascript
JavaScript多线程详解
2015/08/12 Javascript
javascript鼠标右键菜单自定义效果
2020/12/08 Javascript
微信公众号支付H5调用支付解析
2016/11/04 Javascript
Bootstrap模态框案例解析
2017/03/05 Javascript
js中获取键盘按下键值event.keyCode、event.charCode和event.which的兼容性详解
2017/03/15 Javascript
详解Vue 实例中的生命周期钩子
2017/03/21 Javascript
JS实现针对给定时间的倒计时功能示例
2017/04/11 Javascript
js自定义瀑布流布局插件
2017/05/16 Javascript
JavaScript实现获取用户单击body中所有A标签内容的方法
2017/06/05 Javascript
vue单个组件实现无限层级多选菜单功能
2018/04/10 Javascript
mpvue实现左侧导航与右侧内容的联动
2019/10/21 Javascript
JavaScript实现与web通信的方法详解
2020/08/07 Javascript
Vue 实现拨打电话操作
2020/11/16 Javascript
Python调用命令行进度条的方法
2015/05/05 Python
python实现发送邮件功能
2017/07/22 Python
教你用Python写安卓游戏外挂
2018/01/11 Python
win10下python3.5.2和tensorflow安装环境搭建教程
2018/09/19 Python
Python 中Django安装和使用教程详解
2019/07/03 Python
关于win10在tensorflow的安装及在pycharm中运行步骤详解
2020/03/16 Python
Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性(推荐)
2020/07/03 Python
Python JSON常用编解码方法代码实例
2020/09/05 Python
Django搭建项目实战与避坑细节详解
2020/12/06 Python
NFL官方在线商店:NFLShop
2020/07/29 全球购物
人力资源专业推荐信
2013/11/29 职场文书
王老吉广告词
2014/03/20 职场文书
公司年会搞笑主持词
2014/03/24 职场文书
计算机应用专业自荐信
2014/07/05 职场文书
市场营销专业毕业生求职信
2014/07/21 职场文书
2014企业年终工作总结
2014/12/23 职场文书
2015毕业生自我评价范文
2015/03/02 职场文书
自主招生推荐信格式模板
2015/03/24 职场文书
力克胡哲观后感
2015/06/10 职场文书
2016大学生就业指导课心得体会
2016/01/15 职场文书
基于python实现银行管理系统
2021/04/20 Python