1. 我们js引擎运行js 分为两步: 预解析 代码执行
(1). 预解析 js引擎会把js 里面所有的 var 还有 function 提升到当前作用域的最前面
(2). 代码执行 按照代码书写的顺序从上往下执行
2. 预解析分为 变量预解析(变量提升) 和 函数预解析(函数提升)
(1) 变量提升 就是把所有的变量声明提升到当前的作用域最前面 不提升赋值操作
(2) 函数提升 就是把所有的函数声明提升到当前作用域的最前面 不调用函数
-
- var num = 10;
- fun();
- function fun(){
- console.log(num);
- var num = 20
- }
-
-
-
相当于:
-
-
- var num;
- function fun(){
- var num
- console.log(num);
- num = 20
- }
- num = 10;
- fun()
-
-
结果为

-
- var num = 10;
-
- function fn() {
- console.log(num);
- var num = 20;
- console.log(num);
- }
- fn();
-
-
-
-
相当于:
-
-
- var num;
-
- function fn() {
- var num;
- console.log(num);
- num = 20;
- console.log(num);
- }
- num = 10;
- fn();
-
-
-
结果为:
