調用函數后加括號與不加括號的區別


簡單點說,帶括號的是函數調用,直接執行函數;不帶括號的是綁定事件,事件觸發再執行。

復雜點說,帶括號的是把返回值賦值給事件,不帶括號的是把函數體所在地址位置賦值給事件。

舉個例子來說就是

<div id="a">函數括號那回事</div>
<input id="ip" type="button" value="點擊變色">
<script type="text/javascript">
   function cc(){
       var a=document.getElementById("a");
       a.style.color="red";
   }
   function change(){
       var ip=document.getElementById("ip");
       //ip.onclick=cc;   //正常綁定事件,onclick觸發執行
       ip.onclick=cc();   //調用cc,直接執行
   }
   change();  //調用change,直接執行
</script>

上面代碼扔body里,2種挨個感受一下就知道了。

然后會有一個新問題,假如函數需要傳參怎么辦,這時候需要ip.onclick=function(){cc(obj);},理解方式一樣,綁定一個函數,函數在觸發onclick時執行,函數內容是執行cc。


免責聲明!

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



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