最正規的寫法:
$(".a").on("click",function(){ test(); });
另一種寫法:
$(".tl").on("click",test)
錯誤的寫法:
$(".tl").on("click",test())
自我試驗的時候:這種寫法導致即使不點擊對象,文檔加載完畢后也會執行test函數,而用第二種寫法無法傳遞函數參數;
網上百度原因:
test() 這種語法是調用函數,$(".tl").on("click",test()) 這個意思是吧test()函數返回的結果傳給click事件的回調。
第一種寫法里,function(){} 是一種引用對象,傳給了click事件的回調,那么在這時function(){...}里的任何可執行代碼都會在$(".a")觸發click事件時執行。
第二種寫法的意思是,test這個函數作為$(".tl")的click回調事件。
題主的問題是不明白函數的本質是什么,加()代表調用函數並返回函數運算的返回值,不加括號代表所聲明的這個函數對象。
自我理解:
function fun(){
return 5
}
var a=fun
var b=fun()
a是fun函數,b是5;
也就是說不加括號傳入的是函數本身,
加了括號傳入的是函數的返回值;