js引擎运行js 分为两步
1预解析 2代码执行
预解析 : js引擎会把js里面所有的var 和 function 提升到当前作用域的最前面
代码执行 : 按照代码书写顺序执行
预解析(变量提升 函数提升)
变量提升 : 把所有变量声明提升到最前面,不提升赋值操作
eg: console.log(num); //js引擎运行则是 var num; 所以输出是undefined
var num = 10 ; console.log(num);
num = 10;
函数提升 : 把所有函数声明提升到最前面,不调用函数
eg : fn(); //js引擎运行则是function fn(){ 所以输出是11
function fn(){ console.log(11)
console.log(11); }
} fn();
函数表达式 调用必须写在函数表达式的下面