JS的解析器会做两部分的工作:
1)预解析 | 预解析仓库 = “找东西“(找VAR , FUNCTION 以及参数)
2)逐行解读代码
预解析时,var 、function 会发生我们通常所说的变量提升
// 变量提升 var function
console.log(a)
// a() {
// console.log('this is a2')
// }
var b=3
a()
console.log(a)
var a = 1
function a() {
console.log('this is a1')
}
console.log(a)// 1
function a(a, b) {
console.log('this is a2')
console.log(a)
console.log(b)
}
console.log(a)// 1
var a = 2
console.log(a)// 2
log:
/**
ƒ a(a, b) {
console.log('this is a2')
console.log(a)
console.log(b)
}
this is a2
undefined
undefined
ƒ a(a, b) {
console.log('this is a2')
console.log(a)
console.log(b)
}
1
1
2
{a: 3}
*/
/**
* 预解析步骤:
* 1.首先解析到第七行var a, 在预解析器中定义 a =undefined
* 2.解析到a1, 将解析器中 a = a() {
console.log('this is a1')
}
3.解析到a2, 将解析器中 a = a() {
console.log('this is a2&#