公告:本站提供编程开发方面的技术交流与分享,打造最佳教程网,希望能为您排忧解难!

JS教程JavaScript基础:变量的生存期和作用域

JavaScript基础:变量的生存期和作用域

更新时间:2013-05-27 20:12:26 |

JavaScript变量的生存期

在函数内声明的变量,只能在该函数中访问该变量,当退出该函数后,这个变量会被撤销,这种变量称为本地变量或局部变量。您可以在不同的函数中使用名称相同的本地变量,这是因为只有声明过变量的函数能够识别其中的每个变量。

在函数之外声明的变量,页面上的所有函数都可以访问该变量,这种变量称为全局变量。这种变量的生存期从声明它们之后开始,在页面关闭时结束。

JavaScript变量的作用域

 变量的作用域又称为作用范围,是指某变量在程序中的有效范围。根据作用域,变量可以分为全局变量和局部变量。

  1. 全局变量的作用域是全局性的,即在整个JavaScript程序中,全局变量处处都在。
  2. 在函数内部声明的变量,只在函数内部起作用。这些变量是局部变量,作用域是局部性的;函数的参数也是局部性的,只在函数内部起作用。

在函数内部,局部变量的优先级比同名的全局变量优先级要高;如果存在与全局变量名称相同的局部变量,或者在函数内部声明了与全局变量同名的参数,那么,该全局变量将被屏蔽。如下例子:

<script language="javascript" type="text/javascript">
<!--
 var a = "俺是一个全局变量";
 function check()
 {
      var a = "俺是一个局部变量";
      document.write(a);
 }
 check();
//-->
</script>

输出:

俺是一个局部变量

虽然在全局作用域中可以不使用var声明变量,但局部变量一定要使用var来声明。一般情况下,函数并不知道全局作用域中定义了什么变量,也不知道这些变量的作用。如果函数使用的是全局变量,而不是是局部变量,那么就可能改变程序其他部分所依赖的全局变量的值。因此,最好所有变量都使用var来声明。

JavaScript没有块级作用域,函数中声明的所有变量无论是在哪里声明的,在整个函数中都有意义。在下面代码中,变量i,j,k作用域相同,在整个函数体中都有意义。看下下面例子:

<script language="javascript" type="text/javascript">
<!--
 function check()
 {
         var i = 0;
         if(i == 0)
         {
                var j = 1;
                for(var k = 0;k < 1;k ++)
               {
                      document.write("k在循环体内的值为:" + k + "<br />");
               }
               document.write("k在循环体内的值为:" + k + "<br />");
         }
        document.write("j在if语句外的值为:" + j);
 }
 check();
//-->
</script>

输出:

k在循环体内的值为:0
k在循环体内的值为:1
j在if语句外的值为:1
最佳教程网

最大的技术交流平台 www.goodxyx.com© CopyRight 2011-2013, All Rights Reserved

浙ICP备11033019号