1 JS引擎运行 js
我们JS引擎运行js分为两步:预解析 、代码执行。
1.1 预解析
预解析JS引擎会把js里面所有的var还有function提升到当前作用于的最前面。
- 变量提升:就是把所有的变量声明提升到当前作用域的最前面,不提升赋值操作。
- 函数提升:就是把所有的函数声明提升到当前作用域的最前面,不调用函数。
1.2 代码执行
按照代码书写的顺序从上往下执行。
2 代码案例
2.1 第一个案例
var num=10;
fun();
function fun() {
console.log(num);
var num=20;
}
// 输出为 undefined
// 相当于以下代码
var num;
function fun() {
var num;
console.log(num);
num=20;
}
num=10;
fun();
2.2 第二个案例
var num;
function fun() {
console.log(num);
var num=20;
console.log(num);
}
fun();
// 输出为 undefined 20
2.3 第三个案例(重点)
面试题 重点