执行上下文
海风总是洒脱 可以布满山河
全局执行上下文
- 在执行全局上下文代码前将window确定为全局执行上下文
- 对全局数据进行预处理
- 对全局数据进行预处理
- var定义的全局变量===>undefined,添加为window的属性
- function声明的全局函数===>赋值(fun),添加为window方法
- this===>赋值(window)
- 开始执行上下文
- 对全局数据进行预处理
函数执行上下文
- 在调用函数,准备执行函数之前,创建对应的函数执行上下文对象(虚拟的,存在于栈中)
- 对局部数据进行预处理
- 形参变量====>赋值=====>添加为执行上下文的属性
- arguments===>赋值,添加为执行上下文的属性
- var定义的局部变量===>undefined,添加为执行上下文的属性
- function声明的函数 ===> 赋值,添加为执行上下文的方法
- this ===> 赋值(调用函数对象)
- 开始执行函数体代码
<script type="text/javascript">
console.log(a1, window.a1)
window.a2()
console.log(this)
var a1 = 3
function a2() {
console.log('a2()')
}
console.log(a1)
</script>