函数调用和函数引用有什么区别?我有以下功能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();};
(但当然,最好使用addEventListener
和attachEvent
)
注意它们是如何引用函数而不是调用。
当某些东西需要引用时,你不要调用它...你给它一个引用(第一个例子)。
如果要专门调用某个函数,可以使用()
(第二个示例)调用它。但请注意,在第二个示例中,仍然存在对分配给的函数的引用onclick
- 它只是一个匿名函数。
可能更重要的部分:
有些人认为你想这样做:
element.onclick = funcRef();
但是立即执行该函数(因为()
),并将其返回值赋值给onclick
。除非返回值是函数,否则这不是您想要的。
我认为这个故事的寓意是,当你想要/现在需要执行某些东西时,你可以调用该函数。如果需要该功能以供以后使用或需要存储,则不要调用它。

慕丝7291255
TA贡献1859条经验 获得超6个赞
你想要它现在执行吗?然后打电话给它。
a=hello()
表示“ hello()
尽快调用,并将其返回值设置为a
”。
另一方面,a=hello
意思是“ a
是别名hello
。如果你打电话a()
,你会得到与调用相同的结果hello()
”
您将后者用于回调等,您希望告诉浏览器在事件发生后您想要发生什么。例如,您可能想说“ hello()
用户点击时调用”(如示例中所示)。或者,“当AJAX查询返回结果时,callback()
在返回的数据上调用函数”。
添加回答
举报
0/150
提交
取消