javascript执行上下文

javascript中的执行上下文

什么是执行上下文:

执行上下文是一种对javscript代码执行环境的一种抽象概念,也就是说只要javascript代码运行,就一定裕兴在执行上下文中

执行上下文类型

  1. 全局执行上下文:‘这是一个默认的或者说是基础的只想上下文,所以不在函数中执行的代码都会在全局执行上下文中执行,它会做两件事,创建一个全局的window对象,并将this的值设置为改全局对象。’一个程序中只能有一个全局执行上下文
  2. 函数执行上下文:‘每次调用函数时,都会为该函数创建一个执行上下文,每个函数都已自己的一个执行上下文,但注意执行上下文是在函数被调用的时候才会被创建。函数执行上下文有很多个,每当一个执行上下文被创建的时候,都会按照他们定义的顺序去执行相关的代码’
  3. eval函数执行上下文。不常用(译者注:eval函数容易导致恶意攻击,并且运行代码的速度比相应的替代方法慢,因为不推荐使用)

执行栈

在其他语言中也被称作调用栈,这是一种后进先出(LIFO)的数据结构,被用来储存在代码运行阶段创建的所有执行上下文。

当js引擎开始执行第一行js脚本代码的时候,他就会创建一个全局执行上下文然后将它压到执行栈中。每当引擎碰到一个函数,他就会创建一个函数执行上下文,然后将这个执行上下文压到执行栈中

引擎会执行位于执行栈栈顶的执行上下文,当函数执行结束后,对应的执行上下文就会被弹出,然后控制流程到达执行栈的下一个执行上下文。

你可能感兴趣的:(javascript)