您的位置:首页 > Web前端 > JavaScript

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

2011-09-03 14:08 477 查看
 
原文如下:

今天看到了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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  语言 flash 编程 c