今天研究了下jquery中的undefined这个参数,然后看了下网上的解释,看懂了,但是往上有一个代码我不明白,<script type=”text/javascript”>
var undefined = ‘myValue’;window.undefined = ‘myValue_2′;(function(window){    alert(undefined);})(window)
这里打印的是myValue_2,而不是myValue,为什么会是这样 window.undefined和自己定义var undefined有什么区别吗 他们是一样的吗  还有就是undefined是Global 的一个属性 和window.undefined有什么不同吗 求高人解答

解决方案 »

  1.   

    var undefined = "myValue";//此处是window环境
    window.undefined = "myValue_2"; //覆盖了上一行
    var 定义本环境下的变量。你上面的就是定义window环境下的变量,
    而window.xx 是不管在什么环境下,定义的都是window全局变量。
      

  2.   

    你要知道,js的解析顺序是从上到下的。
    如果你把这两行代码颠倒,会得到完成不同的结果。
    var undefined = ‘myValue’;
    window.undefined = ‘myValue_2′;
    alert(undefined);
    根据js的解析顺序,下面的代码会覆盖上面的代码。
    写了一个页面,你自己拷过去试试:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
     <head>
      <title> New Document </title>
      <meta name="Generator" content="EditPlus">
      <meta name="Author" content="">
      <meta name="Keywords" content="">
      <meta name="Description" content="">
     </head> <body>
      <script type="text/javascript">
      <!--
      window.undefined = "ab"
      var undefined = 'myValue';
    alert(undefined);
      //-->
      </script>
     </body>
    </html>
      

  3.   

    这个就好比对象的属性和方法,全局变量都是window的对象或者方法
    比如,你在最顶层定义个函数function aaa()
    那么你调用这个函数的方法可以是直接调用,aaa()也可以是window.aaa()
    如果定义的函数名和内置的函数重名,那么会覆盖原来内置函数,这个要特别注意。