/*
* 预解析:提前解析代码
*就是在解析代码之前,把变量声明提前了,提前到当前所在的作用域的最上面
*函数的声明也会被提前,提前到当前所在的所用于的最上面
*
* */
// //例如:          ----->        预解析:
// var num=10;                     f1();//调用
// function f1() {                 var num;//变量声明提前
//     console.log(num);            function f1() {
//     }                                   console.log(num);
//     f1();                             }
//                                  num=10;//值不变
//                                 //打开页面结果显示:undefined
/*
* 预解析中,变量的提升,只会在当前的作用域中提升提前到当前的作用域的最上面
*函数的变量只会提前到函数的作用域中的最前面,不会出去
*预解析会分段(多对的script标签中函数重名,预解析不会发生冲突)
*
* */
//案例:
// var a=25;
// function abc() {      ------->     function abc(){
//     alert(a);//undefined             var a;
//     var a=10;                        alert(a);
// }                                    a=10;
// abc();                                }
// console.log(a);//25
//案例:
// console.log(a);//此时这个a是函数a,所以显示是function a(){console.log('aaaaa');}这个代码
// function a() {
//     console.log('aaaaa');
// }
// var a=1;
// console.log(a);//1
// //案例:
// var a=18;
// f1();
// function f1() {          ------>       function f1(){
//     var b=9;                             var b;
//     console.log(a);//undefined           var a;
//     console.log(b);//9                   b=9;
//     var a='123';                        console.log(a);
// }                                       console.log(b);
//                                              a='123';
//案例:
// f1();          ------->
// console.log(c);//9 ---全局变量
// console.log(b);//9 ---全局变量
// console.log(a);//报错 ---局部变量
// function f1() {                      function f1(){
//     var a=b=c=9;                         var=a;
//     console.log(a);//9                   a=9;   //此时a是局部变量--->函数以外不显示
//     console.log(b);//9                   b=9;   //b,c是隐式全局变量
//     console.log(c);//9                   c=9;
// }                                        console.log(a);
//                                          console.log(b);
//                                          console.log(c);
// //注意:
// f1();//---报错
// var f1=function () {    ---->   var f1 是已赋值的函数,不能被调用,值是function以下的代码
//     console.log(a);                  即:
//     var a=10;                            var f1;
// }                                        f1=function(){
//                                              console.log(a);
//                                              var a=10;
//                                             }
//                                          f1();