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


最正規的寫法:

$(".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;

也就是說不加括號傳入的是函數本身,

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM