预解析的解释是:
主要是用来变量提升
把带有关键字var 声明的变量提升到最上层去
但是不执行赋值操作
首先我们要知道,JS的运行机制是逐行执行的。就是一行代码执行完毕再执行下一行代码。
我们来看以下的代码输出
console.log(abc);
abc = 20;//报错
console.log(age);
var age = 10;//undefined
console.log(age);//10
那么为什么log(abc)是报错,第一处log(age)是undefined,第二处log(age)输出是10呢?
此处就是JS的预解析机制了。
首先,abc没有被定义,没有定义的函数输出肯定是报错的。
第一处的log(age)相当于是
var age;
console.log(abc);//undefined
age = 10;
所以此处的输出就是undefined。
第二个log(age)相当于是
var age;
console.log(abc);//undefined
age = 10;
console.log(abc);//10
此处的输出想而易见就是10了