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 用原型继承来实现对象系统
Mar 22 Javascript
JS实现图片放大镜效果的方法
Feb 27 Javascript
基于JS实现无缝滚动思路及代码分享
Jun 07 Javascript
js 上传文件预览的简单实例
Aug 16 Javascript
详谈jQuery中的一些正则匹配表达式
Mar 08 Javascript
基于bootstrap实现bootstrap中文网巨幕效果
May 02 Javascript
node.js中使用Export和Import的方法
Sep 18 Javascript
实例讲解javascript实现异步图片上传方法
Dec 05 Javascript
微信小程序 腾讯地图SDK 获取当前地址实现解析
Aug 12 Javascript
js实现橱窗展示效果
Jan 11 Javascript
封装一下vue中的axios示例代码详解
Feb 16 Javascript
一起来了解一下JavaScript的预编译(小结)
Mar 01 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
php防注入及开发安全详细解析
2013/08/09 PHP
PHP递归统计系统中代码行数
2019/09/19 PHP
javascript 读取图片文件的大小
2009/06/25 Javascript
iframe 异步加载技术及性能分析
2011/07/19 Javascript
Nodejs实现的一个静态服务器实例
2014/12/06 NodeJs
jQuery实现切换页面过渡动画效果
2015/10/29 Javascript
JS截取与分割字符串常用技巧总结
2015/11/10 Javascript
详解Node.js包的工程目录与NPM包管理器的使用
2016/02/16 Javascript
浅谈Jquery中Ajax异步请求中的async参数的作用
2016/06/06 Javascript
微信小程序 WXDropDownMenu组件详解及实例代码
2016/10/24 Javascript
js仿QQ邮箱收件人选择与搜索功能
2017/02/10 Javascript
从零学习node.js之express入门(六)
2017/02/25 Javascript
Bootstrap DateTime Picker日历控件简单应用
2017/03/25 Javascript
微信小程序中顶部导航栏的实现代码
2017/03/30 Javascript
JavaScript之underscore_动力节点Java学院整理
2017/07/03 Javascript
Angular+Bootstrap+Spring Boot实现分页功能实例代码
2017/07/21 Javascript
基于Bootstrap的标签页组件及bootstrap-tab使用说明
2017/07/25 Javascript
promise和co搭配生成器函数方式解决js代码异步流程的比较
2018/05/25 Javascript
Nodejs监听日志文件的变化的过程解析
2019/08/04 NodeJs
Vue+Element UI 树形控件整合下拉功能菜单(tree + dropdown +input)
2020/08/28 Javascript
浅析python 内置字符串处理函数的使用方法
2014/06/11 Python
对numpy 数组和矩阵的乘法的进一步理解
2018/04/04 Python
Python实现的求解最小公倍数算法示例
2018/05/03 Python
Python实现针对json中某个关键字段进行排序操作示例
2018/12/25 Python
详解python做UI界面的方法
2019/02/27 Python
Python多重继承之菱形继承的实例详解
2020/02/12 Python
HTML5 Plus 实现手机APP拍照或相册选择图片上传功能
2016/07/13 HTML / CSS
html5 input元素新特性_动力节点Java学院整理
2017/07/06 HTML / CSS
大学生实习自我鉴定
2013/12/11 职场文书
建筑投标担保书
2014/05/20 职场文书
护士医德考评自我评价
2015/03/03 职场文书
检讨书怎么写
2015/05/07 职场文书
代理词怎么写
2015/05/25 职场文书
只需要这一行代码就能让python计算速度提高十倍
2021/05/24 Python
win11电脑关机鼠标灯还亮怎么解决? win11关机后鼠标灯还亮解决方法
2023/01/09 数码科技
详解MySQL的内连接和外连接
2023/05/08 MySQL