zoukankan      html  css  js  c++  java
  • javaScript 全局变量注意

    1.注意隐式全局变量

      function sum(a,b)

      {

        result=a+b;

        return result;

      }

    上面虽然返回结果但是多了一个全局变量命名空间。

    最好使用var 来声明变量

    function sum(a,b)

    {

       var result=a+b;

      return result;

    }

    2.注意创建隐式全部变量的反例

      function foo(){

        var a=b=0;

      }

      a是局部变量但是b 是全局变量,造成这现象的原因是因为从右到左的服务,首先b=0;b情况不明,所以声明为全局变量,然后var a=b,b返回值为0 赋给了a;

      就好比:a=(b=0);

      所以避免b为全局变量

      function foo(){

        var a,b;

        a=b=0;

    }

    3.注意隐式全局变量和明确定义的全局变量有些小差异,就是通过的delete操作符让变量未定义的能力

      a.通过var创建的全局变量(任何函数之外的程序创建)是不能删除。

      b.无var创建的隐式全局变量(无视是否在函数中创建)是能被删除。

      例如:

          var global_var=1;

            global_novar=2;

          (function(){

            global_funcation=3;

          });

        delete global_var;  //false

        delete global_novar;//true

        delete global_funcation;//true

        alert(typeof global_var); //number

        alert(typeof global_novar);//undefined

        alert(typeof global_funcation); //undefined;

     4.单var形式

      在函数顶部使用单var语句是比较有的一种形式,其好处在于:

        a.提供了一个单一的地方去寻找功能所需要的所有局部变量。

        b.防止变量在定义之前使用的逻辑错误

        c.帮助你记住声明的全局变量,因此较少了全局变量

        d.少代码

      例如 :

        fucntion fun(){

          var a=1,

            b=2,

            sum=a+b;

            myobject={},

            i,

            j,

            global=window; 

          }

     你可以使用一个var语句声明多个变量,并以逗号分隔。像这种初始化变量同时初始化的做法是很好的。则样可以防止逻辑错误(所有未初始化但声明的变量的初始值是undefined)和增加代码的可读性。

    5. var预解析

      javasript中,你可以在函数的任何位置声明多个var语句,并且它们就好像是在函数顶部声明一样发挥作用,这中行为称为:hoisting(预解析)。当你使用一个变量,然后不久在函数中又重新声明的话,就可能产生逻辑错误。对于javasript,只要你的变量是在同一个作用域中(同一个函数),它都被当做是声明的,即使是它在var声明前使用的时候。

    例如:

        var myname="global";

        function fun(){

          alert(myname);

          var myname="text";

          alert(myname);

      }

      结果为: undefiend, text;

      出现这样结果是因为myname被当做函数的局部变量(尽管是之后声明的),所有的变量声明当被悬置到函数的顶部了,因此,为了避免这中混乱,最好是预先声明你想使用的全部变量。

      上面代码相同于

      var myname="global";

      function fun(){

        var myname;

        alert(myname);

        myname="text";

        alert(myname);

      }

      

     }

  • 相关阅读:
    spark编译
    使用MapReduce实现两个文件的Join操作
    响应式 Web 设计
    响应式 Web 设计
    900W+数据只用300ms搞定!SQL查询优化这样做最快耗时347ms
    响应式 Web 设计
    CSS3 多媒体查询实例
    CSS3 多媒体查询:查找设备的类型,CSS3 根据设置自适应显示
    CSS3 弹性盒子(Flex Box):确保元素拥有恰当的行为的布局方式
    CSS3 框大小:padding(内边距) 和 border(边框)
  • 原文地址:https://www.cnblogs.com/jzhou/p/3197447.html
Copyright © 2011-2022 走看看