[英]Meaning of (function($) { })(jQuery) (e.g., in jQuery Enlightenment book)
我喜歡“ DOM Enlightenment”一書,並想閱讀jQuery的配套卷。
我已經使用過基本的jQuery,例如下面的,我理解它們。
$(document).bind(‘contextmenu’, function() {
// do something
});
但是書中提到了類似下面的內容……而我不知道如何使用它??
(function($){
// Use $ alias worry-free of conflicts
alert('You are using jQuery ' + $().jquery );
})(jQuery)
console = $('#console'); console.append("<p>At the start of execution, does $ === jQuery? " +( ($ === jQuery)?"yes":"no")+ "</p>"); $ = function() {}; console.append("<p>After re-assignment, does $ === jQuery? " +( ($ === jQuery)?"yes":"no")+ "</p>"); (function($) { console.append("<p>Inside our IFFE, does $ === jQuery? " +( ($ === jQuery)?"yes":"no")+ "</p>"); })(jQuery);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="console"></div>
這是“立即調用函數表達式”-有時稱為“ IIFE”(“ iffy”); 您正在將全局對象jQuery
傳遞到IIFE中,在該對象中它綁定了名稱$
-以防萬一其他正在加載的腳本出於自身目的使用$
。
看到有人使用相同的技術確保未將“ undefined”未重新定義為ECMAScript undefined
的情況也很常見:
(function($, undefined) {
// first argument, the global 'jQuery', bound to $
// there is no second argument, so the ECMAScript built-in type 'undefined'
// will be bound here to the name 'undefined'.
})(jQuery);
這稱為立即函數調用,它是本機JavaScript。
(
// 1. define an anonymous function
function(parameter1, parameter2) {
// 2. this function is now an object
}
)(argument1, argument2); // 3. invoke it with ()
在JavaScript中,可以使用匿名函數(沒有任何名稱的函數),並且可以立即調用這些函數
(function($){
// Use $ alias worry-free of conflicts
alert('You are using jQuery ' + $().jquery );
})(jQuery)
這是一個匿名的立即調用函數。 然后將“ $”傳遞給此函數,並在調用“ jQuery”時編寫它。 這只是為了清楚地表明“ $”表示“ jQuery”。 您也可以使用
(function(){
// Use $ alias worry-free of conflicts
alert('You are using jQuery ' + $().jquery );
})()
它將正常工作。
$()。jquery用於獲取我們正在使用的jquery的版本。
當我們希望在頁面加載時無條件地每次運行特定代碼時,將使用這些匿名函數。
通常,我們需要在某個位置調用函數,以便執行其中的代碼。 但是立即調用的功能有所不同。 這意味着您無需在任何地方調用此函數即可執行。 它會在其on.Adding();中執行; 最后使其立即執行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.