js作用域的问题

1.js的作用域是有函数划分的,而不是块儿

        var too="test";

        if(true){//这是在块中的定义,此时还是全局变量
            var too="new test";
        }
        alert(too=="new test");//return true;
        function test()
        {
            var too="old test";//这是在函数中的定义,此时是局部变量

        }

        test();

        alert(too=="new test");//return true;too并没有改变

2.所有属于全局作用域的变量都是window对象的属性

上面例子中 第一行的 too就是等于 window.too

看下面的例子

        function test()
        {
            too="test";
        }
        test();

        alert(window.too="test");

是不是很奇怪,上面例子中函数中的too是局部变量,在这里就是全局变量了

注意下两个例子的区别,一个通过显示声明 var too

一个隐示声明too="test";

也就是说没有显示定义的变量,它就是全局变量,虽然它可能只能在这个函数内使用。


 

posted @ 2009-01-08 16:27  mshybinbin  阅读(273)  评论(0)    收藏  举报