在JavaScript中,有三种代码分类:
1.全局代码(全局中书写的代码)
2.局部代码(常见函数体里的代码)
3.Eval代码(使用eval()执行的代码)
在JavaScript中的执行上下文指的是JS代码被解析和运行时所处的环境,被称之为JavaScript中的执行上下文
在执行代码前会有一个预编译的过程,这就像执行上下文差不多(个人感觉)
预编译会提前解析代码,但是不会解析=的操作。
1.全局执行上下文
(1)var 定义的全局变量,赋值为undefined(变量的声明提前,但没有解析赋值的操作,所以是undefined),并添加window的方法
(2)function声明的全局变量,赋值为其函数体代码(函数的声明提前),并添加为window的方法
(3)this指向window
(4)一个程序代码中只存在有且只有一个全局执行上下文
最后开始执行全局的代码。
2.函数执行上下文
(1)调用函数前,函数执行上下文,将实参赋值给形参
(2)函数里面的定义的局部变量,赋值给undefined,并添加window的方法
(3)this指向执行函数的对象
(4)当每次调用函数的时候,都会给该函数创建一个函数执行上下文
3.Eval执行上下文(还未了解)