(1)预解析:JavaScript代码在预解析阶段,会对以var声明的变量名和function开头的语句块,进行提升(hoisting)操作。(函数表达式不会被提升)
// alert(a);
// a = 1;//结果为undefined
注意:预处理的时候,函数同名,会将两个函数全部提升,但是后面的函数会覆盖掉前面函数;变量和函数同名,在提升的时候,如果有变量和函数同名,会忽略掉变量,只提升函数,
条件式函数声明是否会被提升,取决浏览器,条件式函数声明不推荐去写
(2)执行
例子:
//变量的提升
// alert(a);// var a = 1;
//提升之后的代码模拟
// var a;// alert(a);
// a = 1;//结果为undefined
注意:预处理的时候,函数同名,会将两个函数全部提升,但是后面的函数会覆盖掉前面函数;变量和函数同名,在提升的时候,如果有变量和函数同名,会忽略掉变量,只提升函数,
条件式函数声明是否会被提升,取决浏览器,条件式函数声明不推荐去写
(2)执行