用于将函数附加到eventlistener的“function()”的用途

时间:2015-08-02 15:33:04

标签: javascript

对不起,如果这个问题看起来很愚蠢,但我已经困惑很久了。

我想在点击按钮时提醒“viola”。 下面的第二个例子没有按预期工作,因为我没有包含“function()”

直觉上我认为第二个例子应该有效,因为我已经将一个函数(allert)附加到元素(button)和eventlistener(onclick)。

因此我真的想知道包含function()的目的。感谢。

示例1

<html>
<button id="clickme">Hello,I'm a button,click me</button>


<script>
    var button=document.getElementById("clickme");

    clickme.onclick=function() {alert("viola");}


</script>
</html>

示例2

<html>
<button id="clickme">Hello,I'm a button,click me</button>


<script>
    var button=document.getElementById("clickme");

    clickme.onclick=alert("viola");


</script>
</html>

2 个答案:

答案 0 :(得分:3)

clickme.onclick=alert("viola");

不会注册函数alert(..),但调用的结果就是函数。

单击按钮时,onclick字段需要稍后执行function。当您安装处理程序时,您不想执行该功能。 你也可以写:

clickme.onclick=myfunction;

function myfunction() { alert("viola") }

答案 1 :(得分:0)

事件监听器只能是一个函数。

alert("viola")

不是一个函数,但实际上是undefined。那是因为

clickme.onclick=alert("viola");

表示“将alert(…)返回值分配给clickme.onclick”。 <{1}}被立即称为 ,并且分配了调用它的结果。

包装器alert("viola")实际上为函数分配了function(){…},然后再调用它。