【深刻理解javascript】执行上下文

参考原文:执行上下文javascript

一、每个执行上下文,工做分为三个阶段:html

准备阶段–>执行阶段–>调用阶段java

准备阶段:代码执行以前,设置数据,至关于初始化。函数

执行阶段:开始执行每一行代码。this

调用阶段:可能没有。若是有函数调用,产生新的执行上下文。函数每被调用一次,都会产生一个新的执行上下文环境。spa

二、代码段htm

javascript在执行一个代码段以前,都会进行“准备工做”来生成执行上下文。这个“代码段”其实分三种状况——全局代码,函数体,eval代码。blog

  • 全局代码是一种,这个应该没有非议,原本就是手写文本到<script>标签里面的。

  • eval代码接收的也是一段文本形式的代码。(eval不经常使用,也不推荐你们用)

函数体是代码段是由于函数在建立时,本质上是 new Function(…) 得来的,其中须要传入一个文本形式的参数做为函数体。ip

三、准备工做ci

准备工做阶段,全局代码的上下文环境数据内容为:

普通变量(包括函数表达式),

 

如: var a = 10;

声明(默认赋值为undefined)
函数声明,

 

如: function fn() { }

赋值
this 赋值

若是代码段是函数体,那么在此基础上须要附加:

参数 赋值
arguments 赋值
自由变量的取值做用域 赋值

四、“函数表达式”和“函数声明”

虽然二者都很经常使用,可是这二者在“准备工做”时,倒是两种待遇。

相关文章
相关标签/搜索