美文网首页
全局及局部变量,预编译

全局及局部变量,预编译

作者: 浮巷旧人 | 来源:发表于2018-08-01 21:02 被阅读0次

    全局变量:在全局定义的变量
    局部变量:在局部定义的变量,也称函数里面定义的变量
    函数里面的能访问外面的 外面的不能访问里面的

      var  a  = 123;
     //全局变量
    function  test  () {
        var  b  =  123;
         function  demo () {
               var  c =  234 ;
               document.write(b);
               document,write(a);
     }
      demo();
      document.write(c);
    }
    test();
    c不能访问   b a 可以访问
    

    预编译前奏

    1.imply global 暗示全局变量:即任何变量,如果变量未经声明就赋值,此变量就为全局对象所有。
    eg:a=123;
    eg: var a = b = 123;
    2.一切声明的全局变量,全是window的属性。
    eg:var a = 123; ===> window.a=123

    预编译

    1.函数声明整体提升
    2.变量 声明提升
    eg:

         function    test()  {
            var  a  =  b  =  123; 
         }
        test();
          b  未被声明  直接被赋值 归window所有
         window.b  =  123   window.a  =  underfined
    

    var num = 123; window.num = 123; delete window.name -> false 一旦经历了var的操作,所得出的属性,window,这种属性叫做不可配置属性 不可配置的属性 delete不掉
    var obj = {}; obj.num = 234;

    四部曲

    1.创建AO对象
    2.找形参和变量声明,将变量和形参名作为AO属性名,值为underfined
    3 将实参值和形参统一
    4 在函数体里面找函数声明,值赋予函数体

    预编译发生在函数执行的前一刻

    1.生成了一个GO对象  
    GO{
           a  : 123(underfined=>function~~=>123)
     }
    var  a  =  123;
    function  a  (){
    
    }
    console.log(a);=>123
    
    Go{
        ƒ test(test)  {
        console.log(test);  
        var  test  =  234;
        console.log(test);
        function  test(){
        }
        }
     }
    
    
     console.log(test);
    function  test(test)  {
        console.log(test);  AO里有先找AO  没有再去找GO
        var  test  =  234;
        console.log(test);
        function  test(){
        }
      AO{
          test  :  function  ()  {},=>234
      }
    }
    test(1);
    var  test  =  123;
    

    相关文章

      网友评论

          本文标题:全局及局部变量,预编译

          本文链接:https://www.haomeiwen.com/subject/vrqdvftx.html