预解析
JavaScript代码是由浏览器中的JavaScript解析器来执行的,JavaScript解析器在运行JavaScript代码的时候分为两步:预解析和代码执行
<script> //1问 // console.log(num); //2问 console.log(num); //undefined 坑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); } //1.我们js引擎运行js 分为两步: 预解析 代码执行 //(1).预解析js引擎会把js 里面所有的var 还有function 提升到当前作用域最前面 //(2).代码执行 按照代码书写的顺序从上往下执行 //2.预解析分为 变量预解析(变量提升) 和 函数预解析(函数提升) //(1) 变量提升 就是把所有的变量声明提升到当前的作用域最前面 不提升赋值操作 //(2) 函数提升 就是把所有的函数声明提升到当前作用域的最前面 不调用函数 </script>