在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ js代碼理解

js代碼理解

問題描述

一個簡單的點擊按鈕觸發(fā)彈窗功能,代碼概念細節(jié)有點混淆

相關(guān)代碼

// 方式一:

<script>
  function f1() {
    alert("這是一個對話框");
  }
</script>
<input type="button" value="顯示效果" onclick="f1()"/>  <!--這里的f1()為什么可以加括號?-->

方式二:

<input type="button" value="開始分離代碼" id="btn" />

<script>
  function f2() {
    alert("開始分離html和js代碼");
  }
  function f2() {
    alert("嘎嘎");
  }
  var btnObj=document.getElementById("btn");
  //為按鈕注冊點擊事件
  btnObj.onclick=f2;//不能加括號,加括號直接就調(diào)用
</script>

請問為什么方式一里的onclick屬性后面的f1要加括號,而方式二中的f2后面就不能加括號???

回答
編輯回答
青黛色

onclick="f1()" 相當于下面的代碼:

//瀏覽器為你包裝了一層
onclick=function(){
    fn();
}

btnObj.onclick=f2; 是一個賦值表達式

2017年1月2日 04:30
編輯回答
舊螢火

dom上的事件綁定是點擊時觸發(fā) ,只有onclick事件觸發(fā)的時候才會去查詢按鈕綁定的事件,然后觸發(fā),這里的等號賦值只是賦值一個引用地址. 而js中,函數(shù)加()則代表函數(shù)調(diào)用,直接返回執(zhí)行結(jié)果的.

2018年8月13日 17:04
編輯回答
醉淸風

onclick 屬性的內(nèi)容是點擊事件發(fā)生時要執(zhí)行的代碼
Function 對象實例后面加上()表示立即執(zhí)行

對于方式一,不加雙括號真正執(zhí)行的代碼相當于
`
onclick = function (){

f1; 

}
`
因為f1沒有立即執(zhí)行,所以執(zhí)行匿名函數(shù)沒有什么效果

而對于方式二,加上雙括號表示把f2執(zhí)行后的結(jié)果賦給onclick屬性,f2執(zhí)行后返回undefined,所以沒有效果

2017年2月10日 17:34
編輯回答
涼薄

加括號代表調(diào)用,執(zhí)行這個方法,
不加括號目的是引用,代表把這個函數(shù)賦值給某個變量.

2017年3月29日 16:05
編輯回答
墨小白

我認為是,如果

onclick = "f1()"

那么會解釋成

onclick = Function("f1()")
2018年4月16日 17:12