jquery綁定事件調用函數的問題

最正規的寫法:函數

$(".a").on("click",function(){
                   test();
                });

另外一種寫法:spa

$(".tl").on("click",test)

錯誤的寫法:code

 $(".tl").on("click",test())

自我試驗的時候:這種寫法致使即便不點擊對象,文檔加載完畢後也會執行test函數,而用第二種寫法沒法傳遞函數參數;對象

網上百度緣由:blog

test() 這種語法是調用函數,$(".tl").on("click",test()) 這個意思是吧test()函數返回的結果傳給click事件的回調。事件

第一種寫法裏,function(){} 是一種引用對象,傳給了click事件的回調,那麼在這時function(){...}裏的任何可執行代碼都會在$(".a")觸發click事件時執行。文檔

第二種寫法的意思是,test這個函數做爲$(".tl")的click回調事件。io

題主的問題是不明白函數的本質是什麼,加()表明調用函數並返回函數運算的返回值,不加括號表明所聲明的這個函數對象。function

自我理解:class

function fun(){
return 5
}
var a=fun
var b=fun()
a是fun函數,b是5;

也就是說不加括號傳入的是函數自己,

加了括號傳入的是函數的返回值;

相關文章
相關標籤/搜索