關於jquery中 (function( window, undefined ) {})()寫法

來源:互聯網
上載者:User

01
今天在讀 jQuery代碼的時候,發現下面的寫法:
02
(function( window, undefined ) {
03
… // code goes here
04
})(window);
05
window 肯定是沒問題, 表示 BOM 瀏覽器物件模型中的 window 對象。但是這裡為什麼會有一個名為 undefined 的形參呢?起初的時候很不理解。去技術群請教了一下,才真正理解了這裡的原因。
06
原來,Javascript 中的 undefined 並不是作為關鍵字(全部Javascript關鍵字列表)出現的。因此可以允許使用者對其賦值。例如:
07
varundefined = ‘myValue’;
08
如此一來,假如 jQuery 中使用下面的寫法:
09
(function( window ) {
10
… // code goes here
11
})(window);
12
必然造成中間代碼裡的 undefined 遭到汙染。因為在預設情況下,對於一個未定義的變數,它的值應該是 undefined,假如使用者使用形如
13
varundefined = ‘myValue’;
14
// 或者
15
window.undefined = ‘myValue’;
16
的代碼進行賦值,那麼,jQuery 中的 undefined 的值就變成了使用者指定的值(這裡是字串 ‘myValue’)。這樣會造成 jQuery 內部異常。
17
 
18
而 jQuery 採用的這種寫法,就很好的避免了這個問題。在執行匿名函數的時候,只傳遞一個參數 window, 而不傳遞 undefined,那麼函數體中的 undefined 局部變數的值,剛好就是 undefined. 甚為巧妙啊。
19
 
20
比較下面幾段代碼:
21
 
22
<script type=”text/javascript”>
23
(function(window, undefined){
24
alert(undefined);
25
})(window);
26
</script>
27
 
28
<script type=”text/javascript”>
29
var undefined = ‘myValue’;
30
(function(window){
31
alert(undefined);
32
})(window);
33
</script>
34
 
35
<script type=”text/javascript”>
36
var undefined = ‘myValue’;
37
(function(window, undefined){
38
alert(undefined);
39
})(window);
40
</script>
41
 
42
<script type=”text/javascript”>
43
var undefined = ‘myValue’;
44
window.undefined = ‘myValue_2′;
45
(function(window){
46
alert(undefined);
47
})(window);
48
</script>
49
 
50
<script type=”text/javascript”>
51
var undefined = ‘myValue’;
52
window.undefined = ‘myValue_2′;
53
(function(window, undefined){
54
alert(undefined);
55
})(window);
56
</script>

作者:leon_lau

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.