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. poj2259 Team Queue

    吼哇,又是水题. 我本来准备开1010个queue的,但是STL容器里好像只有vector滋磁开组,于是只好数组模拟... 然后模拟过了...... #include <cstdio> # ...

  2. A1147. Heaps

    In computer science, a heap is a specialized tree-based data structure that satisfies the heap prope ...

  3. gevent多协程运用

    #导包 import gevent #猴子补丁 from gevent import monkey monkey.patch_all() from d8_db import ConnectMysql ...

  4. linux系统调用之文件系统操作

    access 确定文件的可存取性 chdir 改变当前工作目录 fchdir 参见chdir chmod 改变文件方式 fchmod 参见chmod chown 改变文件的属主或用户组 fchown ...

  5. 关于递推算法求解约瑟夫环问题P(n,m,k,s)

    一. 问题描述 已知n个人,分别以编号1,2,3,...,n表示,围坐在一张圆桌周围.从编号为k的人开始报数1,数到m的那个人出列:他的下一个人又从1开始报数,数到m的那个人又出列:依此规律重复下去, ...

  6. MySQL信息提示不是英文问题

    安装好MySQL后,运行SQL的提示信息总不是英文mysql> select database; ERROR 1064 (42000): 安装好MySQL后,运行SQL的提示信息总不是英文 my ...

  7. Haproxy 安装初体验

    20180916 haproxy Haproxy简介 Haproxy是一款免费的.快速的和稳定的解决方案,提供HA和LB功能,同时对基于TCP的应用和HTTP的应用进行代理,对于流量很大的web站点来 ...

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

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

  9. Emgu.CV 播放视频-本地文件/RTSP流

    using Emgu.CV; using System; using System.Drawing; using System.Threading; using System.Windows.Form ...

  10. angular 中自己常用的下拉框获取值方法

    方法一 HTML页中 <select name="" id="if02" data-first-option="true" (chan ...