在onclick事件中将函数封装在另一个函数中实际意味着什么?

时间:2015-09-05 08:37:16

标签: javascript anonymous-function

我在W3Schools学习JavaScript,遇到过这样的表达式:

document.getElementById("myBtn").onclick = function(){displayDate()};

在等号的右侧,有一个匿名函数吗?当我们不使用匿名函数封装displayDate()函数时,它只能点击一次。当我多次点击该按钮时,它不会更新日期。那么JavaScript中这些函数的含义是什么?我是一个真正的新手。谁能给我一个关于这种方法的明确解释? 在onclick事件中使用匿名函数封装函数。

2 个答案:

答案 0 :(得分:0)

您的代码应严格等同于以下内容:

document.getElementById('myBtn').onclick = displayDate;

因为,对于一个函数displayDate,其目的只是显示一个日期,函数function () { displayDate(); }应该与函数displayDate完全相同,当你调用它时。

因此,您的日期只更新一次的问题应该与displayDate是否包含在匿名函数中无关。您应该查看displayDate的定义以找到错误。

答案 1 :(得分:-1)

这就是场景背后发生的事情:.onclick接受一个函数,它是onclick事件监听器的回调函数。根据定义,回调函数应该等于函数。在JS中,当你输入= myfunction()时,你不会将函数定义传递给变量,但是你正在做的是传递函数执行的值。所以这应该会给你一个错误,因为.onclick必须采取一个函数。要传递函数的定义,请删除()或将其放在function(){myFunc;}