图解javascript作用域链


Posted in Javascript onMay 27, 2019

先来一段简单的javascript代码:

window.onload=function(){
function sub(a,b){
return a-b;
}
var result=sub(10,5);
}

这段代码中的执行环境已经数清楚了,可是执行环境只是代码在预编译过程中javascript引擎所做的事情,当代码在window onload事件被触发,且sub函数被执行的时候会发生什么事情呢?

1.javascript引擎会在页面加载脚本被执行时为每个函数创建一个作用域(执行上下文)及作用域链。

2.javascript引擎在产生这些作用域后,会创建一个堆栈。

3.将onload对应的匿名函数压栈

4.将sub函数压栈

5.sub函数执行完毕出栈

6.匿名函数出栈

整体图解如下:

图解javascript作用域链

如有错误之处,欢迎批评指正。谢谢

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
IE下使用jQuery重置iframe地址时内存泄露问题解决办法
Feb 05 Javascript
JS获取iframe中marginHeight和marginWidth属性的方法
Apr 01 Javascript
jQuery实现批量判断表单中文本框非空的方法(2种方法)
Dec 09 Javascript
JS字符串的切分用法实例
Feb 22 Javascript
vue loadmore 组件滑动加载更多源码解析
Jul 19 Javascript
webpack学习笔记之代码分割和按需加载的实例详解
Jul 20 Javascript
Vue中如何实现轮播图的示例代码
Jul 27 Javascript
详解JSONObject和JSONArray区别及基本用法
Oct 25 Javascript
微信小程序实现image组件图片自适应宽度比例显示的方法
Jan 16 Javascript
Vue实现点击时间获取时间段查询功能
Aug 21 Javascript
vuejs router history 配置到iis的方法
Sep 20 Javascript
详解vue项目中使用token的身份验证的简单实践
Mar 08 Javascript
node.js命令行教程图文详解
May 27 #Javascript
详解JavaScript中的坐标和距离
May 27 #Javascript
优化Vue项目编译文件大小的方法步骤
May 27 #Javascript
了解JavaScript表单操作和表单域
May 27 #Javascript
分享一个vue项目“脚手架”项目的实现步骤
May 26 #Javascript
使用JS判断页面是首次被加载还是刷新
May 26 #Javascript
Node.js 多进程处理CPU密集任务的实现
May 26 #Javascript
You might like
php ss7.5的数据调用 (笔记)
2010/03/08 PHP
ThinkPHP的RBAC(基于角色权限控制)深入解析
2013/06/17 PHP
table标签的结构与合并单元格的实现方法
2013/07/24 PHP
PHP与Java进行通信的实现方法
2013/10/21 PHP
php按字符无乱码截取中文的方法
2015/03/27 PHP
PHP实现根据数组某个键值大小进行排序的方法
2018/03/13 PHP
javascript下IE与FF兼容函数收集
2008/09/17 Javascript
第一个JavaScript入门基础 document.write输出
2010/02/22 Javascript
一个简单的js渐显(fadeIn)渐隐(fadeOut)类
2010/06/19 Javascript
JavaScript中this的使用详解
2013/11/08 Javascript
Javascript与jQuery方法的隐藏与显示
2015/01/19 Javascript
高性能JavaScript模板引擎实现原理详解
2015/02/05 Javascript
JavaScript中的函数(二)
2015/12/23 Javascript
jQuery焦点图左右转换效果
2016/12/12 Javascript
前端 Vue.js 和 MVVM 详细介绍
2016/12/29 Javascript
ES6新特性四:变量的解构赋值实例
2017/04/21 Javascript
使用JavaScript进行表单校验功能
2017/08/01 Javascript
js实现登录注册框手机号和验证码校验(前端部分)
2017/09/28 Javascript
基于vue-cli、elementUI的Vue超简单入门小例子(推荐)
2019/04/17 Javascript
JavaScript中工厂函数与构造函数示例详解
2019/05/06 Javascript
vue项目中使用eslint+prettier规范与检查代码的方法
2020/01/16 Javascript
Vue的Eslint配置文件eslintrc.js说明与规则介绍
2020/02/03 Javascript
JS前端广告拦截实现原理解析
2020/02/17 Javascript
JavaScript实现简单的图片切换功能(实例代码)
2020/04/10 Javascript
python读取浮点数和读取文本文件示例
2014/05/06 Python
Python向MySQL批量插数据的实例讲解
2018/03/31 Python
基于python批量处理dat文件及科学计算方法详解
2018/05/08 Python
对python数据切割归并算法的实例讲解
2018/12/12 Python
Django RBAC权限管理设计过程详解
2019/08/06 Python
python用Tkinter做自己的中文代码编辑器
2020/09/07 Python
微软日本官方网站:Microsoft日本
2017/11/26 全球购物
美国巧克力喷泉品牌:Sephra
2019/05/05 全球购物
澳大利亚鞋仓库:Shoe Warehouse
2019/07/25 全球购物
工地资料员岗位职责
2013/12/31 职场文书
学习决心书
2014/03/11 职场文书
殡葬服务心得体会
2014/09/11 职场文书