执行上下文对象
1、函数提升和变量提升
案例1:输出undefined
console.log(a) // undefined
var a = 10
案例2:正常运行
fun()
function fun() {
alert("我被调用了")
}
案例3:报错
fun()
var fun = function() {
alert("我被调用了")
}
总结:
1、变量和方法会在程序正常执行最开始声明
2、但是给变量赋值方法,就只会声明变量,不会赋值方法
2、执行上下文对象
js代码正常的执行顺序:
1、先对整个window下的变量进行声明
2、再对整个window下的方法进行声明
3、然后从代码开始进行运行,遇到一个函数执行的时候就立即创建一个上下文对象(不是真实存在的)
上下文对象执行规则:
1、变量先声明
2、方法再声明
3、最后从上到下执行代码