我在W3Schools学习JavaScript,遇到过这样的表达式:
document.getElementById("myBtn").onclick = function(){displayDate()};
在等号的右侧,有一个匿名函数吗?当我们不使用匿名函数封装displayDate()
函数时,它只能点击一次。当我多次点击该按钮时,它不会更新日期。那么JavaScript中这些函数的含义是什么?我是一个真正的新手。谁能给我一个关于这种方法的明确解释? 在onclick事件中使用匿名函数封装函数。
答案 0 :(得分:0)
您的代码应严格等同于以下内容:
document.getElementById('myBtn').onclick = displayDate;
因为,对于一个函数displayDate
,其目的只是显示一个日期,函数function () { displayDate(); }
应该与函数displayDate
完全相同,当你调用它时。
因此,您的日期只更新一次的问题应该与displayDate
是否包含在匿名函数中无关。您应该查看displayDate
的定义以找到错误。
答案 1 :(得分:-1)
这就是场景背后发生的事情:.onclick接受一个函数,它是onclick事件监听器的回调函数。根据定义,回调函数应该等于函数。在JS中,当你输入= myfunction()时,你不会将函数定义传递给变量,但是你正在做的是传递函数执行的值。所以这应该会给你一个错误,因为.onclick必须采取一个函数。要传递函数的定义,请删除()或将其放在function(){myFunc;}
中