1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>07.执行上下文</title>
- </head>
- <body>
- <!--
- 1、代码分类(根据位置来分)
- *全局代码
- *函数(局部)代码
- 2、全局执行上下文
- *在执行全局代码前将window确定为全局执行上下文
- *对全局数据进行预处理
- *var定义的全局变量==>undefined,添加为window的属性
- *function声明的全局函数==>赋值(fun),添加为window的方法
- *this==>赋值(window)
- *开始执行全局代码
- 3、函数执行上下文
- *在调用函数,准备执行函数体之前,创建对应的函数执行上下文对象(虚拟的,存在于栈中)
- *对局部数据进行预处理
- *形参变量==>赋值(实参)==>添加为执行上下文的属性
- *arguments==>赋值(实参列表),添加为执行上下文的属性
- *var定义的局部变量==>undefined,添加为执行上下文的属性
- *function声明的函数==>赋值(fun),添加为执行上下文的方法
- *this==>赋值(调用函数的对象)
- *开始执行函数体代码
- -->
- <script>
- //全局执行上下文
- console.log(a1,window.a1) //undefined undefined
- a2() //a2()
- console.log(this) //window
- var a1 =3
- function a2(){
- console.log('a2()')
- }
- console.log('-----------')
- //函数执行上下文
- function fn(a1){
- console.log(a1) //2
- console.log(a2) //undefined
- a3() //a3()
- console.log(this) //window
- console.log(arguments) //伪数组(2,3)
- var a2 = 3
- function a3(){
- console.log('a3()')
- }
- }
- fn(2,3)
- </script>
- </body>
- </html>
|