前言

这篇文章我们接着看执行上下文,主要是 JS 中的闭包和 this 机制两个部分。虽然我们还是从规范出发,但其实这两个东西的概念规范里提的都不多,实际应用起来水又很深,容易把握不住,所以这一篇更多的是举例说明。

1 JavaScript 中的闭包

1.1 规范中的闭包

闭包(closure)这个名词用于计算机中,最初的含义是 “用于描述 λ 表达式和其执行环境的一系列信息”。考虑到当时盛行基于 λ 演算的函数式编程语言,λ 表达式其实可以引申为今天我们所说的 “函数”。

不同于其它语言,JavaScript 的函数在定义上就包含一个 [[Environment]] 字段,其实就是函数执行时的 外层词法环境,那么把闭包的经典定义套用到 JavaScript 上,对应的其实就是 JavaScript 函数对象 本身。

然而,JavaScript 工程师口中的闭包与规范中的闭包概念并不相同。

1.2 工程实践中的闭包

我们先从一段代码着手分析:

// 函数定义
function foo() 

【前端圭臬】十一:从规范看 JavaScript 执行上下文(下)相关推荐

  1. 【前端圭臬】十:从规范看 JavaScript 执行上下文(上)

    前言 接下来我们来啃一个硬骨头,JavaScript 的 执行上下文(Execution Context). 与执行上下文相关的知识有很多弯弯绕绕,不过没关系,我们只需要以两个主要问题为线索展开.第一 ...

  2. 深入理解JavaScript执行上下文与作用域链

    文章目录 前言 一.执行上下文 1.类型 2.生命周期 2.1.创建变量对象 2.2.this绑定 2.3.创建作用域链 总结 前言 只有理解了执行上下文与作用域链,才能更好地理解JavaScript ...

  3. 前端百题斩【010】——通俗易懂的JavaScript执行上下文

    写该系列文章的初衷是"让每位前端工程师掌握高频知识点,为工作助力".这是前端百题斩的第10斩,希望朋友们关注公众号"执鸢者",用知识武装自己的头脑. JavaS ...

  4. 聊一聊javascript执行上下文

    跟大家聊聊js的执行上下文 一,相关概念 EC : 执行上下文 ECS : 执行环境栈 VO : 变量对象 AO : 活动对象 scope chain :作用域链 二,执行上下文 javascript ...

  5. Javascript 执行上下文(ES3)

    简单理解:执行上下文是评估和执行Javascript代码的环境的一个抽象概念.任何代码在JavaScript中运行时,都在执行上下文中运行. 以ES3举例,对于每个执行上下文,都有三个重要属性: 变量 ...

  6. javascript --执行上下文,作用域

    执行上下文 顾名思意就知道他是动态的,只在代码运行的时候产生 作用域 顾名思意就知道它是一个"领域",并且这个"领域"在一开始就规划好, 不会在改, var d ...

  7. 前端基础进阶(二):执行上下文详细图解

    我们在JS学习初期或者面试的时候常常会遇到考核变量提升的思考题.比如先来一个简单一点的. console.log(a); // 这里会打印出什么? var a = 20; 暂时先不管这个例子,我们先引 ...

  8. javascript执行上下文

    执行上下文(Excution Context) Js代码在引擎中是以"一段一段"的方式来执行的,而非一行一行来分析执行的.而这"一段一段"的可执行代码无非三种: ...

  9. 【前端圭臬】一:写给入坑前端的你

    专栏目录 导论 [前端圭臬]一:写给入坑前端的你 HTML 篇 [前端圭臬]二:你知道的和不知道的 HTML CSS 篇 [前端圭臬]三:详解 CSS 选择器 [前端圭臬]四:CSS 核心机制--如何 ...

最新文章

  1. 二叉树的层序遍历 II
  2. gnome3增加自定义程序快捷方式
  3. 【转载】推荐系统-矩阵分解-SVD-通俗易懂
  4. python random库下载_python基础 — random库
  5. 7000字 23张图,Pandas一键生成炫酷的动态交互式图表
  6. TPLink 备份文件bin文件解析
  7. 大叔手记(21):汤姆大叔博客园开博100天总结
  8. Linux下编译、链接、加载运行C++ OpenCV的两种方式及常见问题的解决
  9. python3 缺少PIP解决办法
  10. mysql 查看锁表_MySQL的四种事务隔离级别
  11. 万能表单资料管理系统
  12. 地图找房(四)02——小区房源列表展示和隐藏 小区房源列表数据填充 接口数据-图片地址的基准路径
  13. 一文搞定十大排序算法(细)
  14. “IndentationError: unindent does not match any outer indentation level“ 错误解决
  15. Embase,PubMed,Cochrane,WebOfScience,ScienceDirect检索方法
  16. Dubbo整合Nacos
  17. 3.24虎牙直播一面
  18. linux单进程最大内存,x64 Linux中的单进程最大可能内存
  19. java pdf模板填充生成pdf打印 (亲测有效)
  20. css3新增属性sticky

热门文章

  1. Mybatis解决数据库Blob类型存储与读取问题
  2. 广东地区DNS再次瘫痪
  3. vue3-tree-org 组织结构图
  4. Broadcast(广播)和BroadcastReceiver(广播接收器)
  5. flutter学习-主题风格
  6. 计算机网络国培总结,信息技术国培学习心得体会
  7. Ubuntu命令行模式对硬盘进行分区格式化
  8. CSS背景图拉伸不变形
  9. 深眸科技专注机器视觉的研发与创新,开启工业自动化、智能化进程
  10. xampp的mysql要怎么配置_XAMPP phpmyadmin MYSQL的配置