文档介绍:注意细节js变量作用域
Posted on 2008-07-29 10:53 aming 阅读(603) 评论(1) 编辑收藏
 
  先看一下这段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".
 
?
JavaScript中的全局变量实际上指的是window对象下的对象属性.
.
JavaScript中的作用域是基于上下文,以函数进行划分的,而不是由块(block)划分的.
 
接下来看一个例子(原例来自《精通JavaScript》,有改动):
 
<script type="text/javascript">
// 设置全局变量foo,并置为“test”
var foo = "test";
if ( true )
{
    // 注意:现在还在全局作用域中
    var foo = "new test";
}
// 如我们所见,现在foo等于'new test'了
alert( foo );
// 创建一个会修改变量foo的新函数
function test()