javaScript变量的作用域

来源:互联网 发布:免费网络验证 编辑:程序博客网 时间:2024/04/29 23:52
javaScript的变量可以不声明直接使用。如果不声明,javaScript会自动隐式声明该变量为全局变量,这是一个不错的小东西。不过,如果我们不用var声明该变量,有可能出现错误。比如:
<script>
var str = "myvar";
function foo()
{
 str = "localVar";
}
foo();
document.write(str);
</script>
结果显示:
localVar
本来函数foo中的str是局部变量,但是我们给用var声明,javaScript自动隐式声明为全局变量,造成str成为全局变量,修改了函数外的str的值。如果我们用var声明,结果很明显是不同的。
<script>
var str = "myvar";
function foo()
{
  var str = "localVar";
}
foo();
document.write(str);
</script>
结果显示:
myvar

由于函数是可以嵌套的,所以最后是一个很有意思的嵌套函数来学习一下变量的作用域:
<script>
var scope = "scope";
function checkscope()
{
  var scope = "local scope";
  function nested()
  {
    var scope ="nested scope";
   document.write(scope+"<br>");
  }
  nested();
 document.write(scope+"<br>");
}
checkscope();
document.write(scope);
</script>
结果显示:

local scope
scope
此外,如果在函数体内声明过一个变量,那个不管这个变量是在声明之前出现还是声明之后出现(当然,在之后出现当然都知道这个变量是局部变量了,呵呵~),这个变量都是局部变量,我也是刚知道,嘿嘿
实例:
<script>
var scope = "scope";
function foo()
{
 document.write(scope+"<br>");//在此,scope是局部变量,已声明但并未初始化;
  var scope = "myscope";
 document.write(scope+"<br>");
}
foo();
</script>
结果显示:
undefined
myscope
0 0
原创粉丝点击