浏览器在执行JS代码之前,会先把所有的变量与函数声明先解析一遍
为什么要这么做?
因为它需要提前确定大概开多少个空间,空间够不够,先提前开好,这样子到时候执行代码,就不用临时开空间,大大提升性能等好处,所以总而言之,预解析是在正儿八经执行代码之前来解析的,所以称之为预解析
如何验证,是在代码执行之前解析的?
以前就算某句代码报错,但是它前面的代码会被执行,只是后面代码不再执行了。但是如果你是变量声明报错,里面一句代码都不会执行,所以证明有个阶段叫预解析,在预解析里如果发现变量声明报错,那么后面代码就不执行
// 证明有个阶段肯定是在执行代码以前就来解析的
// 这个阶段就叫预解析
console.log('111111')
let age = 99
let age = 999 // let是不允许在同一个作用域里声明多个同名变量的,所以要报错
console.log('222222')