执行上下文
简写:EC
全称:execution context
分类:
-全局上下文:打开一个窗口,就会创建一个全局上下文(关闭即销毁)
-局部上下文:调用函数时就会创建局部上下文(函数执行完,销毁)
-eval上下文(了解):会解析字符中的JS代码
功能:
代码执行之前的准备工作,确定当前环境下变量的取值
作用域和执行上下文的区别:
作用域:-静态;
执行上下文:-动态;-执行才有EC
提升
1、变量提升:
var 声明的变量(除函数内),只提升变量的声明。
2、函数提升:
提升整个函数体
执行上下文的生命周期:
1、创建:(变量和函数的提升)
2、执行:函数体的代码(改变当前变量和全局变量的值)
//执行栈:存放执行上下文(最底下的是GO,最上面是正在调用的函数)
注:FILO、进栈(压栈),出栈
3、销毁
全局执行上下文:
1、全局对象window
局部执行上下文
1、创建局部对象 AO Active Object
2、预编译
a>形参 变量
b>形参 变量赋值 UN
c>形参和实参相统一
d>函数提升
e>确定this的指向(由调用者确定)
f>确定作用域(词法环境、在哪里声明,就确定在哪里)
g>初始化作用域链
3、执行函数体代码