(function(window, undefined){ //jQuery code; })(window);
为什么要传入undefined?
1.没有传入undefined:
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>Test HTML Page</title> 5 <script type="text/javascript"> 6 7 var undefined = "你好"; 8 ( 9 function(window){ 10 alert(undefined); 11 } 12 )(window); 13 14 </script> 15 </head> 16 <body> 17 <!-- 这里放入内容 --> 18 </body> 19 </html>
在IE8中执行的结果:
2.传入了undefined:
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>Test HTML Page</title> 5 <script type="text/javascript"> 6 7 var undefined = "你好"; 8 ( 9 function(window, undefined){ 10 alert(undefined); 11 } 12 )(window); 13 14 </script> 15 </head> 16 <body> 17 <!-- 这里放入内容 --> 18 </body> 19 </html>
使用IE8测试:
解释:
传入了undefined,则var undefined = "你好";这个将在自调用匿名函数块中不起作用。
原因:
(function(window,undefined){})(test);
匿名函数形参两个,一个window,一个undefined。
自调用的时候,只传了一个实参test,
所以匿名函数的第二个形参被自动赋予了undefined,即window=test, undefined=undefined.