javaScript学习day05

预解析:提前解析代码

就是在解析代码之前把变量、函数的声明提前(赋值不会提前)——提前到当前所在作用域的最上面。

1 function  f1(){
2     console.log("abc");
3 }
4 f1();//输出mmm
5 function f1(){
6     console.log("mmm");
7 }
8 f1();//输出mmm
1     f1();//输出undefined
2     function f1(){
3         console.log(num);
4         var num=10;
5     }
6     f1();//输出undefined

预解析相当于

把上述代码改为

    f1();//输出undefined
     function f1(){
         var num;
         console.log(num);
         num=10;
     }
     f1();//输出undefined    
1  f2();//undefined
2     var mm=20;
3     f2();//20
4     function f2(){
5         console.log(mm);
6         var nn=10;
7     }

预解析小案例

var f1;
f1(); //这里是不能调用的,因为那是一个表达式,不会提前预解析
f1=funuction(){
    console.log(a);
    var a=10;
};
原文地址:https://www.cnblogs.com/xyishere/p/13664893.html