(function( window, undefined ) {
    ... // code goes here})(window);1. 采用匿名函数并加()进行运行,统一命名空间,防止变量的污染。
2. Javascript 中的 undefined 并不是作为关键字,使用参数undefined 是为了防外面定义undefined变量而受污染。3. window ?我不知道这是出于什么样的原因。??请各拉指教

解决方案 »

  1.   

    纯属个人猜想,仅供参考(function(undefined ) {
       window.property1=……;
       window.property2=……;
       ……
    })();
    (function( window, undefined ) {
        ... // code goes here})(window);区分上述两种方式,第一种每个语句都要去找一次window。第二种将window作为参数传递过去,是的不要每个语句都去找window,应该是提高了效率
      

  2.   

    function( window, undefined )定义了第一个参数是window,故用()执行的时候,加一个window对象作为参数传递过去
      

  3.   


    那上面代码写成如下2种形式,效果是一样的。
    (function( window, undefined ) {
        ... // code goes here})(window);(function( x, undefined ) {
        ... // code goes here})(window);还想请教window,本来就是最外层的对象。还要进行再传一次。
      

  4.   

    效果是一样的,就看效率了。
    将window作为参数传递进去就可以让代码里面的语句可以直接用参数中的window,而不用再去找最外层的对象。假如要在函数中为window再设置100000个属性,用参数传递过去只需要找一次最外层对象。不用参数传递,用到window的语句都要去找一次最外层对象。再看看下面的代码//方式一
    (function(undefined ) {
       window.property1=……;
       window.property2=……;
       ……
    })();
    //方式二
    (function( window, undefined ) {
        ... // code goes here})(window);
    //方式三
    (function(undefined ) {
       var tmp=window;
       tmp.property1=……;
       tmp.property2=……;
       ……
    })();方式一的效率明显最低,方式二和方式三应该差不多