亲宝软件园·资讯

展开

jQuery源码分析--为什么在参数列表中传入undefined

lanshanxiao 人气:2
(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.

 

加载全部内容

相关教程
猜你喜欢
用户评论