我碰到這樣的代碼來了?
感謝
我碰到這樣的代碼來了?
感謝
是不是一樣的定義
doSomething()
的jQuery
內取出$
?
如果你的意思,是一樣的:
(function ($){
$(function() {
function doSomething($, $variable){
}
doSomething($('.div'));
});
}(jQuery));
...那麼沒有,因爲在你的問題的版本,doSomething
顯然是全球性的,而如果在其他函數中定義它,它不是。
你的問題的最終結構是爲了防止noConflict
模式,$
不等於jQuery
,通過創建一個函數和調用它,傳遞jQuery
並接受它作爲一個名爲$
參數。這可能是因爲筆者不知道的是jQuery的傳遞到自身的引用到準備回調的事實,因此代碼可以更簡單地說是:
function doSomething($, $variable){
...
}
jQuery(function($) {
doSomething ($, $('.div'));
});
第一個功能是關閉了$
和套IIFE值爲jQuery
。它通常用於避免$
被別處的其他代碼覆蓋。
在IIFE內部,$
將始終爲jQuery
,但在IIFE之外,它可能不是。
內部函數$(function() {..
只是一個DOM就緒處理程序,它在執行代碼之前等待文檔加載。
的doSomething
功能被IIFE外側限定,並且不具有訪問來自IIFE的參數,所以$
可能是未定義的或在該範圍比jQuery的其它東西,因此作者決定通過$
作爲參數到doSomething($, $variable)
,這有點難以閱讀,因爲傳遞的值和參數具有相同的名稱。
是的,它看起來像一些人過濾東西 – smnbbrv
'$'就像任何其他變量一樣:你可以將它作爲函數參數傳遞,或者將它作爲外部範圍的全局變量。 –
你可以參考這篇文章清楚地瞭解它[鏈接](http://stackoverflow.com/questions/10371539/why-define-an-anonymous-function-and-pass-it-jquery-as-the-論據)。它很好地解釋了這個話題。 – legend