对“js变量作用域的疑问”的解答

本文通过一个具体的JavaScript代码示例,详细解析了变量作用域的概念,包括局部变量如何覆盖全局变量,以及JavaScript作为解释型语言其作用域的工作原理。
 
原文如下:

今天看到了FLASH AS关于变量作用域的讲解,突然想到一个js作用域的问题。
如下代码,猜猜执行后都弹出什么?

  
<script type="text/javascript">
  
<!--
  
var a="xx";
  
function c(){
    alert(a);
    
var a=0;
    alert(a);
  }
  c();
  alert(a)

  
//-->
  </script>
执行上面代码分别弹出了:undefined、0和xx。
可能很多朋友都跟我一样吧,对于那个undefined不知道是怎么来的?
js作用域有些地方真是不好理解,希望高人指点!
其实,这个很好理解,就跟 一般的编程语言一样,都有全局变量,局部变量,当局部变量与全局变量同名时,会将全局变量覆盖。js也是如此,不同的是,js是解释型语言,而且有函数的作用域。当执行c()时,会先检查局部变量的定义。如果有则覆盖。然后再解释执行。执行alert(a) 时,因为全局变量已被覆盖。且没有遇到var a=0;所以是undefined。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值