注意细节:Javascript中的变量作用域

先看一下这段Javascript脚本代码:
 1<script language="javascript">
 2    <!--
 3        var v = "aaa"
 4        function func()
 5        
 6            alert(v); 
 7            var v = "bbb"
 8        }

 9    //-->
10</script>

alert 出来的是什么?在我们看来应该是 "aaa",实际上alert 出来的是 "undefined"。为什么?
因为 Javascript为了简化处理,变量实际上只有两种作用域,全局变量和函数的内部变量。你在函数内部任何一个地方定义的变量其作用域都是整个函数体。而在 alert 的时候函数的内部变量 v 已经定义了,并且覆盖掉了同名的全局变量的定义,只是还没有被初始化,所以 alert 出来的是 "undefined"。

作者:TerryLee
出处:http://terrylee.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
posted @ 2005-12-23 11:17 TerryLee 阅读(775) 评论(3)  编辑 收藏 网摘

  回复  引用  查看    
#1楼2005-12-23 13:27 | 薄荷      
呵呵,还没有注意到这个问题!现在知道了!多谢
  回复  引用    
#2楼2008-08-28 09:15 | 小虾米000[未注册用户]
如果把你 var v = "bbb"; 中的var去掉呢???
那样就会不一样的吧!!

  回复  引用  查看    
#3楼2008-11-21 23:26 | collum      
难怪运行一些代码的时候那么奇怪!

var testvar = 'window属性';
var o3 = {
testvar:'3',
testvar2:'3**',
fun:function(){
alert('o3: '+this.testvar);//'obj3'
var inner = function(){
alert('o3-inner: '+this.testvar);//'window属性'
alert('o3-inner: '+this.testvar2);//undefined(未定义)
};
inner();
}
};
o3.fun(); 请问这段代码中的this应该怎样理解呢?谢谢




发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 303192




相关文章:

相关链接: