javaScript之预编译

        变量未声明,也未赋值,就输出就会出错
        变量未声明,赋值,可以输出变量的值

        任何变量,如果变量未经声明就赋值,此变量为全局对象所有,一切声明的全局变量,全是window的属性,就像有一个对象是提前创建好的一样。

        function test()
        {
            a = 1
        }
        test()
        console.log(a); //1
        console.log(window.a);//1

        window就是全局的域
        var a  = 1;//当声明一个a的时候,就会把a放在window里面
        window {
              a :1
        }
        console.log(a);-->window.a

       预编译过程(函数中的预编译)

       1.创建AO对象

        2.找形参和变量声明,将变量和形参名作为AO属性名,值为undefined 

        3.将实参和形参统一

        4.在函数体里面找函数声明,值赋给函数体

        当预编译执行完成后,再执行整个函数

         先来看一个例子

function fn(a)
{
     console.log(a);
     var a = 2;
     console.log(a);
      function a(){}
      console.log(a);
      var b = function () {}
      console.log(b);
      function d(){}
 }
fn(1);

         1.AO{

             }

          2.AO{
                 a:undefined
                 b:undefined
             }

         3.AO{
                a:1
                b:undefined
            }
         4.AO{
                a: function a(){}
                b:undefined
               d:function d(){}
             }

function fn(a)
{
     console.log(a);//ƒ a(){}
     var a = 2;
     console.log(a);//2
     function a(){}
     console.log(a);//2
     var b = function () {}
     console.log(b);//ƒ () {}
     function d(){}
}
fn(1);

       全局的预编译的过程和函数中的预编译类似

       如果在全局的范围中
       生成一个GO对象    global object ==window

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值