网上关于执行上下文的文章有很多,关于什么是执行上下文,很多文章说得很清晰。

我说一下自己的理解。

执行上下文包含三个东西:

VO

this

[[scope]]

为什么包含这三个东西呢?首先我们要明白,什么叫做执行上下文。

执行上下文,又叫做执行环境。那么,什么是环境呢?

维基百科是这样解释的:

环境是指相对并相关某项中心事物的周围事物。

在我们的代码中,比如每一个函数,就是一段可以执行的代码。

这段可执行的代码,就是这个所谓的中心事物。同一个函数,在不同的地方执行,输出的结果是不一样的。这个导致输出结果不同的周围事物,就是所谓的环境。

假如我们现在有如下一段代码:

function doSomeThing(a){

console.log(a);

console.log(global);

console.log(this);

}

那么,当我们执行这一段代码的时候,会首先输出a的值,接着输出全局对象,最后输出this。

但是,这一段代码在不同的地方执行,输出的结果是不一样的。

比如,当我们的入参a不同的时候,那么输出的a就会是不同的。因此,变量就是一个环境。而所有的变量,我们统称其为变量对象,也就是所谓的VO(variable object)。

另外,在不同的地方,this的指向也是不同的。这是显而易见的,也是我们前端需要重点掌握的一个知识点。

还有一个[[scope]],这就是作用域链,链接另一个执行环境的指针。

有了这三个东西,每一个函数就可以明确的知道,自己可以访问到哪些变量,应该在什么样的环境下执行。

这也就是为什么我们把它叫做执行环境、执行上下文。

java 上下文是什么意思_什么是执行上下文相关推荐

  1. 此上下文中不允许函数定义。_面试官:那我们来说说执行上下文吧

    当 JS 引擎处理一段脚本内容的时候,它是以怎样的顺序解析和执行的?脚本中的那些变量是何时被定义的?它们之间错综复杂的访问关系又是怎样创建和链接的?要解释这些问题,就必须了解 JS 执行上下文的概念. ...

  2. JS-垃圾回收机制-执行栈执行上下文-闭包

    JS-垃圾回收机制-执行栈执行上下文-闭包 1 JavaScript 中的垃圾回收机制(GC) 1.1 垃圾回收相关概念 ① 什么是垃圾 没有被使用(引用)的对象就是垃圾. ② 什么是垃圾回收 没有被 ...

  3. JS深入--词法作用域、执行上下文与闭包

    文章目录 词法作用域 执行上下文与词法环境 闭包 闭包练习 作用域链 REF   个人博客文章同步地址 词法作用域   JS 使用的是词法作用域(或称为静态作用域),函数的作用域在定义的时候就决定了, ...

  4. 一、 函数调用栈,执行上下文及变量对象

    前言 为什么会有这篇文章? 在书籍或博客上,我们经常会看到「作用域链」.「闭包」.「变量提升」等概念,说明一个问题 -- 它们很重要. 但很多时候,对于这些概念,看的时候觉得自己已经明白了,可过不了多 ...

  5. java函数ao活动对象_JavaScript中的执行上下文和变量对象

    执行上下文(Execution Context) JavaScript代码执行的过程,包括编译和执行两个阶段,编译就是通过词法分析,构建抽象抽象语法树,并编译成机器识别的指令,在JavaScript代 ...

  6. javascript的执行上下文

    https://juejin.im/post/5ba32171f265da0ab719a6d7 https://juejin.im/entry/599867b2518825241e220eaa 我只是 ...

  7. javascript系列之执行上下文

    写在前面:一 直想系统的总结一下学过的javascript知识,喜欢这门语言也热爱这门语言.未来想从事前端方面的工作,提前把自己的知识梳理一下.前面写了些 DOM的知识,略觉水平有限.没几个月就要开赴 ...

  8. JS_14 执行上下文与执行上下文栈

    执行上下文和执行上下文栈 变量提升和函数提升 变量提升 所用使用var定义的变量,在程序运行前会被先定义,并赋初值为underfind,保存到其执行上下文中 函数提升 在调用函数,执行函数体之前,会先 ...

  9. js执行环境作用域和闭包_JavaScript中执行上下文,提升,作用域和闭包的终极指南

    js执行环境作用域和闭包 It may seem surprising, but in my opinion the most important and fundamental concept to ...

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

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

最新文章

  1. 调用微信高级群发接口--视频群发接口出问题(微信官方文档错误纠正)
  2. 托福备考有用的心得 ——转载
  3. telnet客户端模拟浏览器发送请求
  4. php网站后台密码加密,thinkphp 后台登陆密码加密传入密钥
  5. 设置ORACLE客户端字符集
  6. 视频质量评估的新方式:VMAF百分位数
  7. 【linux】Linux查看服务器登陆用户信息命令(w、last、who)详解
  8. 安装 sql server 2005 com+ 目录要求警告 解决方案
  9. informatica 许可_Informatica安装教程
  10. java集合框架总结(一)
  11. (99)FPGA最大延迟与最小延迟基础
  12. c#之线程总结(一)
  13. ECMAScript 6 + Babel
  14. java线程并发库之--线程阻塞队列ArrayBlockingQueue
  15. .Net下二进制形式的文件(图片)的存储与读取(转载)
  16. 简单实现内外网自由切换、指定网卡上网
  17. WPS加载项部署运行问题排查方法
  18. 百度翻译使用经验(Python版)
  19. 求勾股数c语言OJ,C语言求勾股数(详解版)
  20. 简单的水果价格排序(价格不重复)

热门文章

  1. [Java学习] BFS算法示例
  2. 用计算机画频率分布直方图,频率分布直方图
  3. 录播网站 服务器,录播服务器
  4. 计算机组装配置兼容,电脑组装时怎么选择配置主板
  5. window xp共享文件夹
  6. 超实用超全 || ZBrush笔刷大合集
  7. 蓝桥杯省赛训练营——日期的计算
  8. Java负数除法和求余运算
  9. 戴尔G5 5590重装系统
  10. 单片机实验四 矩阵键盘实验