- A+
所属分类:Web前端
JavaScript 预解析
1.预解析
js引擎运行js代码,分为两步:预解析、代码执行
1.预解析:js引擎会把js里面所有的var还有function提升到当前作用域的最前面
2.代码执行:按照代码书写的顺序从上往下执行
2.变量预解析(变量提升)和函数预解析(函数提升)
1.变量提升:就是把所有的变量声明提升到当前的作用域最前面,不提升赋值操作
2.函数提升:就是把所有的函数声明提升到当前作用域的最前面,不调用函数
3.案例分析
//问题1 console.log(num); //问题2 console.log(num); // nudefined 坑1 var num = 10; //相当于执行了以下代码: var num; console.log(num); num = 10; //问题3 fn(); function fn(){ console.log(11); } //问题4 fun(); // 报错 坑2 var fun = function(){ console.log(22); } //函数表达式调用必须写在函数表达式的下面 //相当于执行了以下代码: var fun; fun(); fun = function(){ console.log(22); }
//案例 f1(); console.log(c); console.log(b); console.log(a); function f1(){ var a = b = c = 9; console.log(a); console.log(b); console.log(c); } //相当执行了以下代码: function f1(){ var a = b = c = 9; //相当于 var a = 9; b = 9; c = 9; b和c直接赋值,没有var声明,当全局变量看 //集体声明:var a = 9, b = 9, c = 9; console.log(a); // 结果是 9 console.log(b);// 结果是 9 console.log(c);// 结果是 9 } f1(); console.log(c);// 结果是 9 console.log(b);// 结果是 9 console.log(a);// 结果是 undefined