原文如下:
今天看到了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作用域有些地方真是不好理解,希望高人指点!
今天看到了FLASH AS关于变量作用域的讲解,突然想到一个js作用域的问题。
如下代码,猜猜执行后都弹出什么?
<script type="text/javascript">
<!--
var a="xx";
function c(){
alert(a);
var a=0;
alert(a);
}
c();
alert(a)
//-->
</script>
可能很多朋友都跟我一样吧,对于那个undefined不知道是怎么来的?
js作用域有些地方真是不好理解,希望高人指点!
其实,这个很好理解,就跟 一般的编程语言一样,都有全局变量,局部变量,当局部变量与全局变量同名时,会将全局变量覆盖。js也是如此,不同的是,js是解释型语言,而且有函数的作用域。当执行c()时,会先检查局部变量的定义。如果有则覆盖。然后再解释执行。执行alert(a) 时,因为全局变量已被覆盖。且没有遇到var a=0;所以是undefined。
本文通过一个具体的JavaScript代码示例,详细解析了变量作用域的概念,包括局部变量如何覆盖全局变量,以及JavaScript作为解释型语言其作用域的工作原理。
1345

被折叠的 条评论
为什么被折叠?



