目录
刚开始的时候对预解析不太在意,就导致写代码时处处踩坑,越是基础的东西越要牢牢掌握才行,故对预解析做一个总结
什么是预解析
预解析顾名思义,提前解析,在代码执行前将var和function提升至当前作用域最前面。具体来讲又可以分为变量预解析(变量提升)和函数预解析(函数提升)
变量预解析(变量提升):将使用var关键字的变量声明提升到当前作用域最前面而不提升赋值操作。
函数预解析(函数提升):将使用function关键字的函数声明提升到当前作用域最前面而不调用函数。
预解析也分为全局预解析和函数预解析:全局预解析发生在页面加载完成时,函数预解析发生在函数执行的前一刻。
变量预解析
console.log(a); //undefined
var a=1;
console.log(a); //1
通过上例 我们可以发现,第一个a输出undefined,而不是a is not defined,因为通过预解析,var a被提升到作用域最前面,而没有对a进行赋值,上例可以写成下面这样的形式
var a;
console.log(a); //undefined
a=1;
console.log(a); //1