js执行全局代码或者执行函数代码的时候,首先进行准备,然后再执行。准备阶段,就是创建执行环境的阶段。

1、执行环境

当一段js代码遇到解释器的时候,比如浏览器打开一段js代码时候,第一件事并不是马上执行,而是创建执行环境。同样的道理,当调用函数的时候,一开始也是创建执行环境。只有当执行环境创建完成,一切准备就绪,然后才执行函数。可以说,与执行环境的创建相比,最终执行过程只是水到渠成的事,砍柴之前先磨刀。

执行环境有3个属性,所以创建执行环境其实就是分别创建这三个属性。

这三个属性是:作用域链,变量对象,this

作用域链 : 好比搞清楚本段代码所处位置,是儿子辈呢,还是孙子辈,目的是代码段出现了找不到的变量,去哪儿搜寻。孙子身上没有,跟父亲要,父亲没有,继续向上跟爷爷身上找。

变量对象:是个对象,这个对象包含了本执行环境的变量和函数名,意思我自己有这么些家当,但是两种家当不归入列表:没有用var关键字定义的变量+函数表达式;代码执行的时候,需要什么玩意,先从变量对象这个家当库里面找(找不到咋办?上面的作用域链有用了)。变量对象最重要的一个玩意叫arguments,跟参数有关,具体arguments[0]是第一个接收的参数,arguments[1]是第二个接收的参数,以此类推,但是arguments 是个对象,除了包括参数,还有其他属性,比如length(望文生义表示参数的长度)。

this:暂时没搞懂。

画个图,就是这样的:

执行环境:{

1、作用域链:{ A->B->C }

2、变量对象:{

       arguments{

            0:参数1,

            ……

            length:参数长度

            } 

        a:本执行环境的一个变量,创建执行环境的时候,变量一概赋值undifined

       b:本执行环境的一个函数指针,

      }

3、this :{  }

}

js的执行环境学习笔记的更多相关文章

  1. 浏览器中js执行机制学习笔记

    浏览器中js执行机制学习笔记 RiverSouthMan关注 0.0772019.05.15 20:56:37字数 872阅读 291 同步任务 当一个脚本第一次执行的时候,js引擎会解析这段代码,并 ...

  2. 《JS高程》事件学习笔记

    事件:文档或浏览器窗口中发生的一些特定的交互瞬间,也即用户或浏览器自身执行的某种动作. -------------------------------------------------------- ...

  3. 《Node.js入门》CentOS 6.5下Node.js Web开发环境搭建笔记

    近期想尝试一下英特尔的基于WebRTC协同通信开发套件,所以须要在本地搭建Node.js Web的开发測试环境. 这里讲的是CentOS 下的搭建方法.使用Windows的小伙伴请參考: <No ...

  4. FastJson远程命令执行漏洞学习笔记

    FastJson远程命令执行漏洞学习笔记 Fastjson简介 fastjson用于将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean.fastjson.ja ...

  5. 20135202闫佳歆--week 8 进程的切换和系统的一般执行过程--学习笔记

    此为个人笔记存档 week 8 进程的切换和系统的一般执行过程 一.进程调度与进程切换 1.不同的进程有不同的调度需求 第一种分类: I/O密集型(I/O-bound) 频繁的进行I/O 通常会花费很 ...

  6. 《JS高程》数据类型学习笔记

    认认真真看完了<JavaScript高级程序设计>第3章的基本概念,原来一直不明白的知识点都在这里面啊...T_T...基础真的很重要,很重要,很重要... 现在终于明白了读书的技巧,书读 ...

  7. 理解JS的执行环境

    执行环境(Execution context,EC)或执行上下文,是JS中一个极为重要的概念 EC的组成 当JavaScript代码执行的时候,会进入不同的执行上下文,这些执行上下文会构成了一个执行上 ...

  8. (O)JS:执行环境、变量对象、活动对象和作用域链(原创)

    var a=1; function b(x){ var c=2; console.log(x); } b(3); ·执行环境(execution context),也称为环境.执行上下文.上下文环境. ...

  9. Vue.js官方文档学习笔记(一)起步篇

    Vue.js起步 Vue.js介绍 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库 ...

随机推荐

  1. dom4j解析xml时取消DTD验证

    解决方式整合一下,就分两种: 1.用setFeature() SAXReader reader = new SAXReader();reader.setValidation(false); reade ...

  2. BZOJ 1996: [Hnoi2010]chorus 合唱队(区间dp)

    题目: https://www.lydsy.com/JudgeOnline/problem.php?id=1996 题解: 这题刚拿到手的时候一脸懵逼qwq,经过思考与分析(看题解),发现是一道区间d ...

  3. docker学习5--docker数据卷(volume)

    https://blog.csdn.net/dream_broken/article/details/52314993 1.什么是数据卷volume 为了了解什么是Docker Volume,首先我们 ...

  4. js 打开标签

    JS打开新标签的2种方式 1.超链接<a href="http://www.jb51.net" title="脚本之家">Welcome</a ...

  5. LOJ#2306 蔬菜

    补充一个题意不太清楚的地方:蔬菜坏掉是假设蔬菜都有标号,那么特定标号的蔬菜就会在特定时间坏掉.如果你及时卖了它们,那么那一天就不会有新的蔬菜坏掉. 结论1:如果我们知道了k天的答案,那么我们直接扔掉若 ...

  6. YSLOW(一款实用的网站性能检测工具)

     概述 YSlow是Yahoo发布的一款基于FireFox的插件,这个插件可以分析网站的页面,并告诉你为了提高网站性能,如何基于某些规则而进行优化.  安装  官网:http://yslow.org/ ...

  7. 查询redis数据

    1.连接跳板机 2.跳板机连接服务器 3.服务器打开redis 4.查询redis数据

  8. Vue(基础七)_webpack(CommonsChunkPlug的使用)

    ---恢复内容开始--- 一.前言 1.多入口文件配置                               2.CommonsChunkPlugin的用法                   ...

  9. 字节输入流 FileInputStream

    字节输入流 InputStream : 方法介绍: read(); 读取下一个字节 返回-1读取文件结束 close(); 复制文件 将数据aaa.txt复制到d盘 字节输入流读---->字节输 ...

  10. Inception介绍(MySQL自动化运维工具)

    Inception介绍 GitHub:https://github.com/mysql-inception/inception 文档:https://mysql-inception.github.io ...