我試着用Google搜索的答案,但問題是我真的不知道如何解決這個問題,我只是找到了錯誤的主題。聲明一個新的函數與立即調用它?
有什麼區別:
this.on('click',thisismyfunction);
和:
this.on('click', function(){
thisismyfunction();
});
我試着用Google搜索的答案,但問題是我真的不知道如何解決這個問題,我只是找到了錯誤的主題。聲明一個新的函數與立即調用它?
有什麼區別:
this.on('click',thisismyfunction);
和:
this.on('click', function(){
thisismyfunction();
});
一個顯着的區別:第一個函數將被直接傳遞事件對象,以任何你的名字的thisismyfunction
,或者在arguments[0]
第一個參數進行訪問。在第二個版本中,該對象將被傳遞給外部匿名函數。
此外,在這兩個示例什麼都沒有馬上被調用。你將兩個函數(第一種情況下的命名函數或第二種情況下的匿名函數)綁定爲事件處理程序,因此它們將在相關事件發生後調用。
你使用哪一個將主要取決於代碼結構和風格。正如bennett_an所說,當您將相同的功能綁定到多個事件時,最好使用第一種變體。
真的沒事。
第一個示例將直接綁定到thisismyfunction
。第二個示例將綁定到一個匿名函數,然後在調用時調用thisismyfunction()
。
一個是命名函數。重點在於,您可能會多次從多個地方調用該函數。另一個是自治功能。它基本上就像是說「執行以下操作:」
函數:JavaScript中的函數可以是有名稱的或匿名的。 命名函數可以使用function關鍵字定義如下:
function named(){ // do some stuff here }
匿名函數可以被 以類似的方式作爲一個正常的功能定義,但它不會有任何 名。
可以將一個匿名函數分配給一個變量或傳遞給一個 方法,如下所示。
var handler = function(){ // do some stuff here }
jQuery讓一個 匿名函數的使用非常頻繁如下:
$(document).ready(function(){ // do some stuff here });
thisismyfunction採取將收到沒有參數。你將它嵌入匿名函數的方式。
在你的例子中,結果可能沒有區別。但這兩種方法都表現得有一點不同:
第一個例子:
this
自己的函數中是指點擊的元素上第二示例
this
自己的函數中是指匿名函數那麼哪種風格你使用取決於你自己的喜好,你想實現什麼
所以從技術上講,如果我需要發送正確的參數,我會使用匿名函數? –
不,你得到了傳遞給'.on()',無論命名的函數的參數。但是,如果您使用匿名函數從那裏調用另一個函數,那麼除非您明確地將它們傳遞給其他函數,否則此函數將不會獲取該事件對象。 – bfavaretto