是什麼以下函數定義的形式之間的差的:不同形式定義一個函數
$.myFunction = function() {
//function body
};
var myFunction = function() {
//function body
};
$(myFunction = function() {
//function body
});
是什麼以下函數定義的形式之間的差的:不同形式定義一個函數
$.myFunction = function() {
//function body
};
var myFunction = function() {
//function body
};
$(myFunction = function() {
//function body
});
$.myFunction = function() {
//function body
};
這創建了一個函數作爲$
對象的屬性。如果您使用的是jQuery,那麼$
是全球的jQuery
對象。你會調用該函數與$.myFunction()
var myFunction = function() {
//function body
};
這將創建分配給一個名爲myFunction
變量的函數。如果您在另一個功能中執行此操作,則myFunction
將僅在該範圍內可用。
$(myFunction = function() {
//function body
});
這一塊是做兩件事情,讓我們把它分成兩個步驟,使之更加明確:
myFunction = function() { // step 1
//function body
};
$(myFunction); // step 2
myFunction
。該變量是全局的,因爲您沒有使用var
關鍵字。一般來說,你可能不想使用全局變量,當然定義不是很明顯。第二步是(假設您使用jQuery)將myFunction
傳遞給jQuery,以在DOM完成加載時執行。有關更多信息,請參閱jQuery documentation。
它更常見傳遞給jQuery的一個功能,而不將其分配給任何變量,即
$(function() {
//function body
});
首先一個增加了一個函數myFunction
到$
它可以是任何的JavaScript庫如jQuery的,MooTools的的,在內部使用$
的原型等。
在第一個函數中,您只需將自己的函數添加到由$
指定的JavaScript庫。
第二個是函數表達式爲oppossed到具有這種形式函數聲明:
function myFunction() {
//function body
}
第三個看起來weired,但它也是使用函數表達式由於$
的JavaScript庫的上下文,那麼無論這個庫是什麼意思。
要了解更多關於函數表達式和函數聲明的型差分,看看這個優秀的帖子:
的函數表達式和函數聲明之間最重要的型差分你要記住的是函數聲明無論聲明在哪裏都可用(因爲它們被提升到頂部),而函數表達式只能運行在d之前或之後定義爲您的後續代碼。一個例子是:
foo1(); // alerts "I am function declaration"
foo2(); // error, undefined function
function foo1() {
alert('I am function declaration');
}
var foo2 = function() {
alert('I am function expression');
};
foo1(); // alerts "I am function declaration"
foo2(); // alerts "I am function expression"
FYI,也有自調用匿名函數和自inovking命名的功能:轉換成使用這些字符的函數式
// self invoking anonymous function
(function(){
// code
})();
// self invoking named function
(function foo(){
// code
})();
和函數聲明:
! function(){
// code
})();
+ function foo(){
// code
})();
請注意,自解析函數在解析後立即運行,因爲()
在他們簽名的末尾。
假設「$」代表jQuery(這在這裏看起來很明顯),第三種語法定義了一個匿名函數並將其作爲參數傳遞給jQuery,這是一個用於註冊jQuery.DocumentReady回調的快捷方式。
你好,的[jQuery的函數聲明的說明]可能重複(http://stackoverflow.com/問題/ 8480756/jquery-function-declaration-explanation), –
這不是你引用的問題的重複。 – baltoro