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);

  }

  

 }

原文地址:https://www.cnblogs.com/jzhou/p/3197447.html