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

What does encapsulating a function inside another function in onclick event actually mean?

本文关键字:函数 封装 另一个 意味着 什么 究竟 事件 onclick 一个      更新时间:2023-09-26

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

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

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

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

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

因为,对于目的仅仅是显示日期的函数displayDate,函数function () { displayDate(); }在调用它时应该具有与函数displayDate完全相同的效果。

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

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