执行上下文
JS原理:原型链、执行上下文、事件循环
预备知识
- 栈
栈是类似于数组的一种数据结构。
- 对象引用
如果变量是一个对象,实际上变量中存放的是对象的地址
概念
执行上下文:某个函数或全局代码的执行环境,该环境中包含执行代码需要的所有信息。
可以简单的理解为:执行上下文是一个对象,对象中包含了执行代码需要的信息。
当执行一个函数时,需要建立执行上下文,建立之后,才正是开始执行。
call stack(执行上下文栈):组织管理程序运行过程中的执行上下文
执行上下文的内容
- VO:variable object,变量对象,存放的是函数或全局代码执行过程中需要用到的局部变量
- scope:作用域
- this
vo是一个对象,调用函数或执行全局代码时创建,创建一个vo,需要经过三步:
- 确定函数形参的值(包括arguments对象)
在函数中寻找数据时,会先从vo中查找,如果vo中不存在,再使用外层数据
AO: active object,执行栈顶部上下文的vo
创建vo对象
- 确定形参值
- 确定函数中所有的函数字面量声明
- 该函数必须是字面量声明,字面量声明提取到vo后,可以认为该声明失效
- 如果当前vo中出现同名属性,直接覆盖
- 确定函数中所有的变量声明(var),将其提取到上下文中,值为undefined
- 如果当前vo中出现同名属性,忽略
编译:将一种语言代码,翻译成另外一种语言