簡體   English   中英

在javascript中,當執行getElementById()。onclick = function時,為什么不需要function()?

[英]In javascript, when doing getElementById().onclick = function, why are the function () not necessary?

抱歉,很難為此冠名。 我對javascript還是陌生的,這使我感到困惑。

這是我的代碼

function getRandom() {
  document.getElementById('divtest').innerHTML = (Math.floor(Math.random()* 20))
}

document.getElementById('buttontest').onclick = getRandom

因此,通常,當在文檔中的某處調用函數時,或者甚至在html中添加onclick ='myFunction()'時,我都需要編寫myFunction()並附帶聲明。

但是在這里,當我在getElementById上執行.onclick時,如果我編寫= getRandom(),我的代碼將不起作用,如我的代碼片段所示,它必須為= getRandom。

這是為什么?

謝謝!

在Javascript中,您傳遞的是對該函數的引用,而不是調用它(這會將函數的返回值添加為回調)。

而在HTML中定義回調函數時,您會將完整的調用寫入HTML元素屬性。

通過執行()您可以調用函數。 在您的情況下,如果您添加()則調用getRandom ,結果( undefined )將分配給onclick事件處理程序。 因此,您要分配功能本身。 考慮示例:

var func = function () { return 2 }
console.log(func) //=> ƒ () { return 2 }
console.log(func()) //=> 2

您的onClick是一種“指向”該函數的函數,該函數包含在該元素上遇到click事件時要運行的代碼。 這不是對函數的正常“調用”,在該函數中您將獲得一些返回值。 在那里您將使用括號。 但是,您在此處將函數設置為click事件的處理程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM