JavaScript代码的执行是由浏览器中的JavaScript解析器来执行的。JavaScript解析器执行JavaScript代码的时候,分为两个过程:预解析过程和代码执行过程
预解析过程:
1.例子:
1 f1(); 2 console.log(c); //9 3 console.log(b); //9 4 console.log(a); //报错 5 function f1() { 6 var a = b = c = 9; 7 console.log(a); //9 8 console.log(b); //9 9 console.log(c); //9 10 }
预解析后:
1 function f1() { 2 var a;//有var是局部变量,函数外不能访问 3 a=9; 4 // 提升后有没有var,是隐式全局变量,所以函数外可以访问 5 b=9; 6 c=9; 7 console.log(a);//9 8 console.log(b);//9 9 console.log(c);//9 10 } 11 f1(); 12 console.log(c);// 9 13 console.log(b);// 9 14 console.log(a);//报错
2.例子:
1 f1(); //结果最终是报错 2 var f1=function () { 3 console.log(a); 4 var a=10; 5 };
预解析后:
1 //分析 2 var f1; //预解析,所以f1只进行了声明,f1里面没有内容, 3 f1(); //报错 4 f1=function () { 5 console.log(a); 6 var a=10; 7 };
原文:https://www.cnblogs.com/anji/p/13995049.html