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中Eval函数的使用
Mar 23 Javascript
jQueryPad 实用的jQuery测试工具(支持IE,chrome,FF)
May 22 Javascript
读jQuery之三(构建选择器)
Jun 11 Javascript
基于JQuery实现的类似购物商城的购物车
Dec 06 Javascript
JS获取URL中的参数数据
Dec 05 Javascript
javascript学习笔记(六)数据类型和JSON格式
Oct 08 Javascript
Javascript中的数据类型之旅
Oct 18 Javascript
jquery对Json的各种遍历方法总结(必看篇)
Sep 29 Javascript
vue表单验证你真的会了吗?vue表单验证(form)validate
Apr 07 Javascript
分享一个vue项目“脚手架”项目的实现步骤
May 26 Javascript
ES6 Array常用扩展的应用实例分析
Jun 26 Javascript
Javascript 解构赋值详情
Nov 17 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导出中文内容excel文件类实例
2015/07/06 PHP
PHP实现获取并生成数据库字典的方法
2016/05/04 PHP
thinkPHP中_initialize方法实例分析
2016/12/05 PHP
PHP使用JpGraph绘制折线图操作示例【附源码下载】
2019/10/18 PHP
纯js和css实现渐变色包括静态渐变和动态渐变
2014/05/29 Javascript
jQuery验证插件 Validate详解
2014/11/20 Javascript
浅谈JavaScript中的对象及Promise对象的实现
2015/11/15 Javascript
jquery ui dialog替代confirm实例分析
2016/01/25 Javascript
基于JavaScript实现鼠标向下滑动加载div的代码
2016/08/31 Javascript
JavaScript设置名字输入不合法的实现方法
2017/05/23 Javascript
详解webpack 入门总结和实践(按需异步加载,css单独打包,生成多个入口文件)
2017/06/20 Javascript
javascript实现获取一个日期段内每天不同的价格(计算入住总价格)
2018/02/05 Javascript
详解Vue.js项目API、Router配置拆分实践
2018/03/16 Javascript
Vue实现textarea固定输入行数与添加下划线样式的思路详解
2018/06/28 Javascript
angular4强制刷新视图的方法
2018/10/09 Javascript
Javascript中Math.max和Math.max.apply的区别和用法详解
2020/08/24 Javascript
js回到页面指定位置的三种方式
2020/12/17 Javascript
linux服务器快速卸载安装node环境(简单上手)
2021/02/22 Javascript
[01:14]英雄,所敬略同——2018完美盛典宣传视频4K
2018/12/05 DOTA
[11:44]Ti9 OG夺冠时刻
2019/08/25 DOTA
Python实现的数据结构与算法之链表详解
2015/04/22 Python
python 获取文件下所有文件或目录os.walk()的实例
2018/04/23 Python
Python实现微信机器人的方法
2019/09/06 Python
基于Python获取docx/doc文件内容代码解析
2020/02/17 Python
La Redoute英国官网:法国时尚品牌
2017/04/27 全球购物
博柏利美国官方网站:Burberry美国
2020/11/19 全球购物
介绍一下常见的木马种类
2014/11/15 面试题
大学新闻系自荐书
2014/05/31 职场文书
优秀教师个人总结
2015/02/11 职场文书
市场总监岗位职责
2015/02/11 职场文书
2015年污水处理厂工作总结
2015/05/26 职场文书
全陪导游词开场白
2015/05/29 职场文书
四大名著读书笔记
2015/06/25 职场文书
新手,如何业余时间安排好写作、提高写作能力?
2019/10/21 职场文书
基于CSS3画一个iPhone
2021/04/21 HTML / CSS
清空 Oracle 安装记录并重新安装
2022/04/26 Oracle