执行上下文
Posted lucy-xyy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了执行上下文相关的知识,希望对你有一定的参考价值。
<!--
1.代码分类(位置)
全局代码
函数(局部)代码
2.全局执行上下文
在执行全局代码前将window确定为全局执行上下文
对全局数据进行预处理
var定义的全局变量==》undefined,添加为window的属性
function声明的全局函数==》赋值(fun),添加为window的方法
this==>赋值(window)
开始执行全局代码
3.函数执行上下文
在调用函数,准备执行函数体之前,创建(window上下文对象是已经有了,function需要创建)对应的函数执行上下文对象(并不是完全真实存在的,用完就消失,是个封闭独有的区域,函数外看不见)
对局部数据进行预处理
形参变量==》赋值(实参)==》添加为执行上下文的属性
arguments===>赋值(实参列表),添加为执行上下文属性
var定义的局部变量==》undefined,添加为执行上下文的属性
function声明的函数==>赋值(fun),添加为执行上下文的方法
this===>赋值(调用函数的对象)
开始执行函数体代码
<script> //全局执行上下文 //首先变量提升,预处理 //var a1 ;function a2,this=function 都放到window里 window就是执行上下文 //执行a1的时候就去window里找,执行a2也去window里找 console.log(a1,window.a1) window.a2() console.log(this) var a1=3 function a2(){ console.log(‘a2()‘) } //函数执行上下文 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)//要执行才会创建scope空间 没有fn()则不会创建空间,但不管执不执行都要准备要 </script>
以上是关于执行上下文的主要内容,如果未能解决你的问题,请参考以下文章