全局范围中的var someVariable和JavaScript中的window [“someVariable”]之间的区别

时间:2012-06-03 11:56:43

标签: javascript namespaces global

  

可能重复:
  Javascript global variables
  Should I use window.variable or var?

问题:定义全局变量的两种方法:

    全球范围内的
  1. var someVariable;
  2. window["someVariable"] = “some value”;有什么区别?
  3. 在我的测试中,IE中的两种方式不同(从IE6到IE8)。 (IE9没关系) 您可以在我的博客中查看它:ie-naming3.html,或运行以下代码:

    <!doctype html>
    <html>
    <head>
        <meta charset="utf-8" />
        <title>Test naming in IE6</title>
        <style type="text/css">
    
        </style>
        <script type="text/javascript">
    
                window.foo = window.foo || {};
                foo.eat = function(){
                    alert("ie6");
                };
    
        </script>
    </head>
    <body>
        <div id="container">
    
        </div>
        <script type="text/javascript">
            alert(typeof window.foo.eat);
        </script>
        <!--   <script type="text/javascript" src="./ie6-naming.js"></script> -->
        <script>
    //        alert(typeof window.foo.eat);
    var foo = foo || {};      
            alert(typeof foo.eat);
        </script>
    </body>
    </html>
    

    感谢任何想法!

    编辑:

    问题是:运行代码,你得到两个警告:首先显示你的“功能”,但第二个显示你“未定义”,为什么?

1 个答案:

答案 0 :(得分:0)

在全局范围内没有区别,在闭包或函数中它会有所不同:

(function() {
    var a = 1;
})();
alert(a); //doesn't work

(function() {
    window.a = 1; // or a = 1; (w/o the var) but not recommended (see comments)
})();
alert(a); //works!!