图解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 DOM操作小结与实例
Jan 07 Javascript
关于JavaScript的面向对象和继承有利新手学习
Jan 11 Javascript
Jquery中使用setInterval和setTimeout的方法
Apr 08 Javascript
不同Jquery版本引发的问题解决
Oct 14 Javascript
使用jquery实现IE下按backspace相当于返回操作
Mar 18 Javascript
jQuery插件Slider Revolution实现响应动画滑动图片切换效果
Jun 05 Javascript
实例代码详解jquery.slides.js
Nov 16 Javascript
纯js实现手风琴效果
Apr 17 Javascript
jQuery插件HighCharts绘制简单2D折线图效果示例【附demo源码】
Mar 21 jQuery
AnglarJs中的上拉加载实现代码
Feb 08 Javascript
原生JS实现萤火虫效果
Mar 07 Javascript
JS前端轻量fabric.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面向对象程序设计之对象生成方法详解
2016/12/02 PHP
PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】
2018/03/15 PHP
javascript 日历提醒系统( 兼容所有浏览器 )
2009/04/07 Javascript
javascript 页面划词搜索JS
2009/09/28 Javascript
javascript (用setTimeout而非setInterval)
2011/12/28 Javascript
jqPlot 图表中文API使用文档及源码和在线示例
2012/02/07 Javascript
js document.write()使用介绍
2014/02/21 Javascript
模拟用户点击弹出新页面不会被浏览器拦截
2014/04/08 Javascript
js实现的点击数量加一可操作数据库
2014/05/09 Javascript
js调试系列 断点与动态调试[基础篇]
2014/06/18 Javascript
javascript制作坦克大战全纪录(1)
2014/11/27 Javascript
NodeJS学习笔记之Connect中间件模块(二)
2015/01/27 NodeJs
JS组件Bootstrap Table表格多行拖拽效果实现代码
2015/12/08 Javascript
jQuery防止重复绑定事件的解决方法
2016/05/14 Javascript
全面解析vue中的数据双向绑定
2017/05/10 Javascript
jQuery plugin animsition使用小结
2017/09/14 jQuery
Node.js npm命令运行node.js脚本的方法
2018/10/10 Javascript
JS实现的A*寻路算法详解
2018/12/14 Javascript
[00:44]华丽开场!DOTA2勇士令状带来全新对阵画面
2019/05/15 DOTA
Python使用MySQLdb for Python操作数据库教程
2014/10/11 Python
Python实现KNN邻近算法
2021/01/28 Python
根据DataFrame某一列的值来选择具体的某一行方法
2018/07/03 Python
50行Python代码获取高考志愿信息的实现方法
2019/07/23 Python
python定义类self用法实例解析
2020/01/22 Python
Python Pandas 对列/行进行选择,增加,删除操作
2020/05/17 Python
Css3实现无缝滚动防抖
2020/09/14 HTML / CSS
HTML5之SVG 2D入门9—蒙板及mask元素介绍与应用
2013/01/30 HTML / CSS
使用phonegap获取设备的一些信息方法
2017/03/31 HTML / CSS
Carolina Lemke Berlin澳大利亚官网:时尚太阳镜品牌
2019/09/17 全球购物
计算机系毕业生推荐信
2013/11/06 职场文书
中层干部竞争上岗演讲稿
2014/01/13 职场文书
策划创业计划书
2014/02/06 职场文书
毕业生就业推荐表自我鉴定
2014/03/20 职场文书
副主任竞聘演讲稿
2014/08/18 职场文书
GitHub上77.9K的Axios项目有哪些值得借鉴的地方详析
2021/06/15 Javascript
日本官方排名前10的动漫,名侦探柯南上榜,第一是一部创造历史的动漫
2022/03/18 日漫