一:JavaScript中的“上下文“指的是什么
百科中这样定义:
上下文是从英文context翻译过来,指的是一种环境。
在软件工程中,上下文是一种属性的有序序列,它们为驻留在环境内的对象定义环境。
在对象的激活过程中创建上下文,对象被配置为要求某些自动服务,如同步、事务、实时激活、安全性等等。又比如计算机技术中,相对于进程而言,上下文就是进程执行时的环境。
具体来说就是各个变量和数据,包括所有的寄存器变量、进程打开的文件、内存信息等。
 

JavaScript的执行上下文的理解是一种大概模糊的理解(译者)。

上下文的原意是content,而作用域的原意是scope。
 
scope指的是 函数被调用的时候, 各个变量的作用区域
content指的是 函数被调用的时候, 查看this指向哪个object, 那么那个object 就是当前的 "上下文"。
 
反正我的理解就是:当前执行环境的作用域,因为“上下文”如果离开了执行环境就没有啥实际意义了。
 
二:JavaScript的两个阶段都干了啥
(1)预“编译”阶段(一定要注意,这个编译,不是编译成机器码的编译):
          浏览器的JavaScript引擎“解析”JavaScript代码。
          建立arguments对象(隐藏对象,不可见),函数,参数,变量
          建立作用域链
          确定this的值(或者说指向)
 
 (2)代码执行阶段
            浏览器的JavaScript引擎一步步执行代码段,从上至下。
            给变量赋值,确定函数的引用。
 
三:具体代码分析
  1. function foo(z){
  2. var a="Hi";
  3. var b=function(){
  4.  
  5. };
  6. function c(){
  7.  
  8. }
  9. }
  10.  
  11. foo("zqz")
 
预“编译”阶段:
    z—>undefined
    a—>undefined;
    b—>undefined;
    c—>function (){}
 
执行阶段:
    z—>"zqz";
    a—>"Hi";
    b—>function (){};
    c—>function c(){}
 
    
这里面还有个问题:构建执行环境作用域时,arguments对象(隐藏对象,不可见),函数,参数,变量的声明与构建有先后顺序。
arguments对象(隐藏对象,不可见)—>函数—>参数—>变量
 
  1. function foo(z){
  2. console.log(a);
  3. console.log(b);
  4.  
  5. var a = 'Hi';
  6. var b = function() {
  7.  
  8. };
  9.  
  10. function a() {
  11.  
  12. }
  13. console.log(a);
  14. console.log(b);
  15. }
  16.  
  17. foo("zqz")
结果:function a(){}    
            undefined    //是变量声明
            Hi
            function b(){}
按顺序走一遍:arguments—>function a(){}—>z—>var a='Hi';var b=function(){}
 
 
 

Javascript的“上下文”(context)的更多相关文章

  1. Javascript 执行上下文 context&scope

    执行上下文(Execution context) 执行上下文可以认为是 代码的执行环境. 1 当代码被载入的时候,js解释器 创建一个 全局的执行上下文. 2 当执行函数时,会创建一个 函数的执行上下 ...

  2. 关于react16.4——上下文Context

    首先我们来聊一聊(上下文)Context. 上下文(Context) 提供了一种通过组件树传递数据的方法,无需在每个级别手动传递 props 属性. 在典型的 React 应用程序中,数据通过 pro ...

  3. 编程中经常看到上下文context,这个上下文指得是什么?

    举个栗子:小美气呼呼对我说:“你去死吧”,我当时哭了. 场景1:小美刚转学到我们学校,我暗恋了她很久,有一天鼓足勇气,向她表白,小美气呼呼对我说:“你去死吧”,我当时就哭了.场景2我跟小美从小青梅竹马 ...

  4. Android上下文Context

    Android上下文Context介绍 在应用开发中最熟悉而陌生的朋友-----Context类 ,说它熟悉,是应为我们在开发中时刻的在与它打交道,例如:Service.BroadcastReceiv ...

  5. 01 . Go之从零实现Web框架(框架雏形, 上下文Context,路由)

    设计一个框架 大部分时候,我们需要实现一个 Web 应用,第一反应是应该使用哪个框架.不同的框架设计理念和提供的功能有很大的差别.比如 Python 语言的 django和flask,前者大而全,后者 ...

  6. 深入理解javascript执行上下文(Execution Context)

    本文转自:http://blogread.cn/it/article/6178 在这篇文章中,将比较深入地阐述下执行上下文 - Javascript中最基础也是最重要的一个概念.相信读完这篇文章后,你 ...

  7. JavaScript执行上下文

    变量声明.函数声明为何会提升?js执行时是如何查找变量的?JavaScript中最基本的部分——执行上下文(execution context) 什么是执行上下文? 当JavaScript代码运行,执 ...

  8. 引用reference作用域scope闭包closure上下文context用法

    引用(reference).作用域(scope).闭包(closure)以及上下文(context)是JavaScript重中之重的基础,也是学习好JavaScript的基础.在这里我以浅显的理解给大 ...

  9. 再看javascript执行上下文、变量对象

    突然看到一篇远在2010年的老文,作者以章节的形式向我们介绍了ECMA-262-3的部分内容,主要涉及到执行上下文.变量对象.作用域.this等语言细节.内容短小而精悍,文风直白而严谨,读完有酣畅淋漓 ...

随机推荐

  1. 【探索】无形验证码 —— PoW 算力验证

    先来思考一个问题:如何写一个能消耗对方时间的程序? 消耗时间还不简单,休眠一下就可以了: Sleep(1000) 这确实消耗了时间,但并没有消耗 CPU.如果对方开了变速齿轮,这瞬间就能完成. 不过要 ...

  2. Linq之旅:Linq入门详解(Linq to Objects)

    示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...

  3. 使用ServiceStack构建Web服务

    提到构建WebService服务,大家肯定第一个想到的是使用WCF,因为简单快捷嘛.首先要说明的是,本人对WCF不太了解,但是想快速建立一个WebService,于是看到了MSDN上的这一篇文章 Bu ...

  4. C# 发送邮件 附件名称为空

     示例代码: // 1.创建邮件 MailMessage mailMsg = new MailMessage(); mailMsg.To.Add(new MailAddress("test@ ...

  5. C# 数组的交集、差集、并集

    C# 数组的交集.差集.并集 工作中经常会用这方面的知识来检查那些字段是必须输入的,那些是禁止输入. using System; using System.Collections.Generic; u ...

  6. 2Sum

    用哈希表(unordered_map)使得时间复杂度从O(n*n)降到O(n),空间复杂度从O(1)增到O(n):一边找一边插入哈希表 注意 在C++11以前要使用unordered_map需要 #i ...

  7. 程序员必须要知道的Hadoop的一些事实

    程序员必须要知道的Hadoop的一些事实.现如今,Apache Hadoop已经无人不知无人不晓.当年雅虎搜索工程师Doug Cutting开发出这个用以创建分布式计算机环境的开源软...... 1: ...

  8. beans.xml

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  9. js数组去重几种思路

    在一些后台语言中都内置了一些方法来处理数组或集合中重复的数据.但是js中并没有类似的方法,网上已经有一些方法,但是不够详细.部分代码来源于网络.个人总计如下:大致有4种思路 1)使用两次循环比较原始的 ...

  10. Microsoft Visual Studio 2017 for Mac Preview 下载+安装+案例Demo

    目录: 0. 前言 1. 在线安装器 2. 安装VS 3. HelloWorld 4. ASP.NET MVC 5. 软件下载 6. 结尾 0. 前言: 工作原因,上下班背着我的雷神,一个月瘦了10斤 ...