图解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 相关文章推荐
jquery获取ASP.NET服务器端控件dropdownlist和radiobuttonlist生成客户端HTML标签后的value和text值
Jun 28 Javascript
javascript小数四舍五入多种方法实现
Dec 23 Javascript
js和jquery如何获取图片真实的宽度和高度
Sep 28 Javascript
推荐JavaScript实现继承的最佳方式
Nov 11 Javascript
JavaScript中的冒泡排序法
Aug 03 Javascript
为JQuery EasyUI 表单组件增加焦点切换功能的方法
Apr 13 jQuery
微信小程序 支付功能实现PHP实例详解
May 12 Javascript
微信小程序-滚动消息通知的实例代码
Aug 03 Javascript
vue项目优化之通过keep-alive数据缓存的方法
Dec 11 Javascript
vue-cli基础配置及webpack配置修改的完整步骤
Oct 20 Javascript
javaScript实现一个队列的方法
Jul 14 Javascript
js实现简单选项卡制作
Aug 05 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完全过滤HTML,JS,CSS等标签
2009/01/16 PHP
mysql 性能的检查和优化方法
2009/06/21 PHP
为数据添加append,remove功能
2006/10/03 Javascript
javascript入门·图片对象(无刷新变换图片)\滚动图像
2007/10/01 Javascript
利用JS自动打开页面上链接的实现代码
2011/09/25 Javascript
基于JQuery 滑动与动画的说明介绍
2013/04/18 Javascript
判断一个变量是数组Array类型的方法
2013/09/16 Javascript
js中的push和join方法使用介绍
2013/10/08 Javascript
JS完整获取IE浏览器信息包括类型、版本、语言等等
2014/05/22 Javascript
jQuery使用$.ajax进行异步刷新的方法(附demo下载)
2015/12/04 Javascript
搭建Bootstrap离线文档的方法
2016/12/02 Javascript
vue.js指令v-model实现方法
2016/12/05 Javascript
jQuery拖拽通过八个点改变div大小
2020/11/29 Javascript
微信小程序多张图片上传功能
2017/06/07 Javascript
vue.js开发实现全局调用的MessageBox组件实例代码
2017/11/22 Javascript
详解vue 数据传递的方法
2018/04/19 Javascript
详解微信小程序input标签正则初体验
2018/08/18 Javascript
Vue路由模块化配置的完整步骤
2019/08/14 Javascript
[07:52]2014DOTA2 TI逗比武士游V社解说背后的故事
2014/07/10 DOTA
python 多维切片之冒号和三个点的用法介绍
2018/04/19 Python
python中对数据进行各种排序的方法
2019/07/02 Python
在linux下实现 python 监控usb设备信号
2019/07/03 Python
Python Django切换MySQL数据库实例详解
2019/07/16 Python
python GUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例
2020/02/25 Python
python实现经纬度采样的示例代码
2020/12/10 Python
详解HTML5中的标签
2015/06/19 HTML / CSS
澳大利亚工具仓库:Tools Warehouse
2018/10/15 全球购物
在校生自我鉴定
2014/01/23 职场文书
小学科学教学反思
2014/01/26 职场文书
后勤服务中心总经理工作职责
2014/03/03 职场文书
潘婷洗发水广告词
2014/03/14 职场文书
出纳试用期自我鉴定
2014/04/07 职场文书
社区学习雷锋活动总结
2014/04/25 职场文书
国际贸易求职信
2014/07/05 职场文书
2014年全国爱牙日宣传活动方案
2014/09/21 职场文书
先进基层党组织主要事迹材料
2015/11/03 职场文书