对“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。
相关文章推荐
- Js作用域链及变量作用域【详解】
- js加强:js引擎,变量作用域,arguments对象,特殊函数,闭包
- js声明变量的三种方式及作用域
- js变量没有块级作用域一说
- JS变量及其作用域
- 作用域(1)---Js作用域链及变量作用域
- JS。某变量作用域。
- js跨域访问:js变量作用域
- JS之 函数模仿块级作用域,私有变量,模块模式
- 深入理解JS中的变量作用域
- js变量声明以及作用域的问题
- 深入理解JS中的变量作用域
- 有关js的变量作用域和this指针的讨论
- js中变量的作用域
- 关于JS变量的作用域,作用域链与闭包
- 注意细节js变量作用域
- JS高级程序设计4-变量、作用域、和内存的问题
- js 默认的参数、可变的参数、变量作用域
- js变量声明提升,变量作用域与函数作用域,作用域链
- 深入理解JS变量作用域