2017-09-05 19 views
0

我是初學者,我剛纔想做到這一點:事件偵聽器不符合預先定義的功能作爲工作參數

ul.addEventListener("click", function(e) { 
    console.log("Hi"); 
}); 

這工作。我明白這是一個匿名函數。然而,當我嘗試事先給這個函數的定義,並傳遞它就像這樣,它不會工作:

function myFunc(e) { 
    console.log("Hi from myFunc"); 
} 

ul.addEventListener("click", myFunc(e)); 

我不明白有什麼區別。錯誤如下:

Uncaught ReferenceError: e is not defined at javascript.js:29

非常感謝您的幫助。

+2

在第二個中,您調用(執行)該函數,而不是傳遞函數引用。 – George

回答

4

傳遞函數的引用,而不是執行的結果。當click事件將被解僱時,它會調用你的功能。這與您通過匿名函數時的情況相同,在兩種情況下,只傳遞函數的引用。

function myFunc(e) { 
    console.log("Hi from myFunc"); 
} 

ul.addEventListener("click", myFunc); 
+0

非常感謝!那工作 – user74843