Js 1.0 --Var的作用

js中经常会声明变量。

<!--V1.0-->

<script>

  myVar = 'xcy';

  console.log(myVar);

  console.log(window.myVar); 

  console.log(window['myVar']);

  console.log(this.myVar);

</script>

这四个结果是一样的,都是全局变量的值。

<!--V1.1-->

 <script>

  myVar = 1;  //全局变量 
  function test() { 
        var   myVar; 
        console.log(window.myVar);  //结果为1, window下是全局对象
        myVar = 2;     //函数里,用var声明的局部变量 
        console.log(myVar);  //结果为2 
  } 
  test(); 
  console.log(myVar);  //结果为1

</script>

可见有没有var在变量前声明是很重要的,以后一定要注意,在方法内部一定要加var,可以减少不必要的麻烦。

 

<!--V1.2-->

<script>

  myVar = 1;  //全局变量 

  function test(){

//var myVar;  尽管未声明,后声明都会被当作已声明 自动悬置在顶部声明,但不定义变量值。  这种行为称为 hoisting(悬置/置顶解析/预解析)

    console.log(myVar);  // undefined

    var myVar = 2;  //局部变量

    console.log(myVar);  //  myVar = 2;

  }    

  test();

</script>

第一个是”undefined”是因为myVar被当做了函数的局部变量(尽管是之后声明的),所有的变量声明当作被悬置到函数的顶部了。因此,为了避免这种混乱,最好是预先声明你想使用的全部变量。

 

PS:对于声明变量,不要用链式赋值,var a = b =0; 这样的结果其实是 var a = (b=0),结果是a为局部变量, b为全局变量。

推荐使用链分配式赋值,var a = 0, b = 0;

posted @ 2013-11-19 17:50  xcy7703  阅读(173)  评论(0)    收藏  举报