javaScript变量的作用域

本文探讨了JavaScript中变量声明及作用域的相关问题,包括变量不声明直接使用导致的问题,以及如何通过var关键字正确声明变量避免意外修改全局变量的情况。同时,通过具体的代码示例展示了不同层级变量的作用范围。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值