js的运行环境相关

170 阅读1分钟

相关概念

执行环境栈(ECStack)

浏览器会在计算机内存中申请一块儿内存,专门用来供js代码执行。这块儿区域被称之为执行环境栈ECStack

全局对象GO(Global Object

全局对象:浏览器会把内置的一些属性和方法放到一个单独的内存(堆内存)中。

在浏览器端,浏览器会让window指向GO。 在node端,node会让global指向GO

执行上下文(Eexcution Context

执行上下文就是当前JS被解析和执行时存在的环境。

  • 全局的执行上下文
  • 函数中的代码都会在单独的私有执行上下文中处理
  • 块级的执行上下文

变量对象VO(Variable Object

在当前上下文中,用来存放创建变量和值的地方。每一个执行上下文中都会有一个自己的变量对象。函数私有上下文中的叫做AOActivation Object 活动对象,也是变量对象)。

赋值操作的基本过程

基本类型

  1. 创建一个值(栈内存中)
  2. 创建一个变量 (栈内存中)
  3. 让变量和值关联在一起

引用类型

  1. 创建一个堆内存
  2. 把键值对存储到堆内存中
  3. 堆内存地址放在栈中个,供变量调用

作用域

前置知识

局部变量:在函数内部定义的变量,或者使用let/const在块级作用域定义的变量,外面不能使用。