js引擎运行js需要分两步,第一步预解析,第二步执行代码
预解析分变量: 预解析(变量提升)“不执行赋值”
函数预解析(函数提升)“不执行函数调用”
<script>
// js的预解析将声明关键词‘var’和‘function’所声明的变量提前声明,实现预解析
console.log(a);
var a = 0;
// 预解析为:
// var a;
// console.log(a);
// a = 0;
fn();
var b = function fn(){
console.log(888);
}
// 预解析为:
// var b;
// fn();
// b = function fn(){
// console.log(888);
// }
// 预解析只声明变量和函数,不进行赋值和调用函数
</script>