簡單點說,帶括號的是函數調用,直接執行函數;不帶括號的是綁定事件,事件觸發再執行。
復雜點說,帶括號的是把返回值賦值給事件,不帶括號的是把函數體所在地址位置賦值給事件。
舉個例子來說就是
<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。
