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

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

我有以下功能

function hello() {
 alert("hi!");}

拿这段代码:

var elem = document.getElementById("btn");elem.onclick = hello;

我的问题可能有点难以理解,所以请耐心看看:这段代码与正常调用有什么区别,或者是什么使得这段代码需要引用函数变量而不是常规调用?(hello();

我怎么知道我应该在哪里提供函数的引用,以及什么时候我应该实际调用它?


阿晨1998
浏览 1237回答 3
3回答

吃鸡游戏

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

慕丝7291255

你想要它现在执行吗?然后打电话给它。a=hello()表示“ hello()尽快调用,并将其返回值设置为a”。另一方面,a=hello意思是“ a是别名hello。如果你打电话a(),你会得到与调用相同的结果hello()”您将后者用于回调等,您希望告诉浏览器在事件发生后您想要发生什么。例如,您可能想说“ hello()用户点击时调用”(如示例中所示)。或者,“当AJAX查询返回结果时,callback()在返回的数据上调用函数”。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript