暗示全局变量GO、AO
1.GO:global object 全局上下文
说白了,其实GO就是window。
var a = 1;
function a(){
console.log(2)
}
console.log(a)
可以看到打印结果是1。那么它的演变过程可以理解为
GO:{
a:undefined -> function a(){} -> 1
}
总结一下:
- 找变量
- 找函数声明
- 执行
测试一下:
console.log(a,b)
function a(){
}
var b = function(){}
结果是什么?
按照之前说的GO预编译顺序分析一下:
GO:{
b:undefined,
a:undefined - > function a(){}
}
执行结果为 a -> function(){} b:undefined
2.接下来说一下AO:activation object 活跃对象/函数上下文
看个例子:
function test(a){
console.log(a);
var a = 1;
console.log(a);
function a(){}
console.log(a);
var b = function(){}
console.log(b);
function d(){}
}
test(2);
执行函数test(2),打印结果会是什么?先不要着急,后面会输出日志,自己先试一下。
分析一下,看下预编译步骤
- 首先寻找函数的形参和变量声明
- 把实参的参数值赋值给形参
- 寻找函数声明,赋值函数体
- 执行函数


浙公网安备 33010602011771号