为了账号安全,请及时绑定邮箱和手机立即绑定

函数调用和函数引用有什么区别?

函数调用和函数引用有什么区别?

阿晨1998 2019-08-02 16:42:09
函数调用和函数引用有什么区别?我有以下功能function hello() {  alert("hi!");}拿这段代码:var elem = document.getElementById("btn");elem.onclick = hello;我的问题可能有点难以理解,所以请耐心看看:这段代码与正常调用有什么区别,或者是什么使得这段代码需要引用函数变量而不是常规调用?(hello();)我怎么知道我应该在哪里提供函数的引用,以及什么时候我应该实际调用它?
查看完整描述

3 回答

?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

好吧,该onclick属性需要一个函数的引用,以便在单击该元素时执行。通常它是:

element.onclick = funcRef;

要么

element.onclick = function () {
    funcRef();};

(但当然,最好使用addEventListenerattachEvent

注意它们是如何引用函数而不是调用。

当某些东西需要引用时,你不要调用它...你给它一个引用(第一个例子)。

如果要专门调用某个函数,可以使用()(第二个示例)调用它。但请注意,在第二个示例中,仍然存在对分配给的函数的引用onclick- 它只是一个匿名函数。

可能更重要的部分:

有些人认为你想这样做:

element.onclick = funcRef();

但是立即执行该函数(因为()),并将其返回值赋值给onclick。除非返回值函数,否则这不是您想要的。

我认为这个故事的寓意是,当你想要/现在需要执行某些东西时,你可以调用该函数。如果需要该功能以供以后使用或需要存储,则不要调用它。


查看完整回答
反对 回复 2019-08-02
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

你想要它现在执行吗?然后打电话给它。

a=hello()表示“ hello()尽快调用,并将其返回值设置为a”。

另一方面,a=hello意思是“ a是别名hello。如果你打电话a(),你会得到与调用相同的结果hello()

您将后者用于回调等,您希望告诉浏览器在事件发生后您想要发生什么。例如,您可能想说“ hello()用户点击时调用”(如示例中所示)。或者,“当AJAX查询返回结果时,callback()在返回的数据上调用函数”。


查看完整回答
反对 回复 2019-08-02
  • 3 回答
  • 0 关注
  • 1231 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信