小编典典

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

javascript

我有以下功能

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

这段代码:

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

我的问题可能有点难以理解,所以请忍受:是什么使该代码段与常规调用完全区分开,或者是什么使该代码段需要引用函数变量而不是常规调用?(hello();

我怎么知道应该在哪里引用该函数,以及什么时候该真正调用它?


阅读 523

收藏
2020-04-25

共1个答案

小编典典

好吧,该onclick属性期望对函数的引用,以便在单击元素时执行该函数。通常是:

element.onclick = funcRef;

要么

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

(但是,当然,最好使用addEventListenerattachEvent

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

当某些东西需要引用时,您不会调用它…而是为其分配引用(第一个示例)。

当您要专门调用一个函数时,可以使用()(第二个示例)进行调用。但是请注意,在第二个示例中,仍然有对分配给该函数的引用onclick-它只是一个匿名函数。

可能更重要的部分是:

有人认为您想这样做:

element.onclick = funcRef();

但这会立即执行该函数(由于()),并将其返回值分配给onclick。除非返回值 一个函数,否则这不是您想要的。

我认为这个故事的寓意是,当您希望/需要立即执行某项操作时,可以调用该函数。如果需要该函数供以后使用或需要存储,则不要调用它。

2020-04-25