在JavaScript中调用没有括号的函数

Car*_*los 2 javascript

我们使用()来调用函数,但我很困惑为什么我们在javascript中的onclick事件中附加函数时只使用函数名.

function a(){
alert(0)
}

document.getElementById('btn').onclick=a


<input value="click" type="button" id="btn" />
Run Code Online (Sandbox Code Playgroud)

juv*_*ian 8

因为a()执行函数,同时a是对函数的引用.如果您这样做,console.log(a)您将看到该功能的代码


Fel*_*ing 5

因为我们当时不想调用该函数,所以我们只想给该属性分配一个引用,以便稍后在事件发生时调用它。

这是不正确的

document.getElementById('btn').onclick = a();
Run Code Online (Sandbox Code Playgroud)

它会调用该函数立即并指定返回值onclick,这是undefined。因此,当事件发生时什么也不会发生。