我有以下功能
function hello() { alert("hi!"); }
这段代码:
var elem = document.getElementById("btn"); elem.onclick = hello;
我的问题可能有点难以理解,所以请忍受:是什么使该代码段与常规调用完全区分开,或者是什么使该代码段需要引用函数变量而不是常规调用?(hello();)
hello();
我怎么知道应该在哪里引用该函数,以及什么时候该真正调用它?
好吧,该onclick属性期望对函数的引用,以便在单击元素时执行该函数。通常是:
onclick
element.onclick = funcRef;
要么
element.onclick = function () { funcRef(); };
(但是,当然,最好使用addEventListener和attachEvent)
addEventListener
attachEvent
请注意,它们都是如何引用函数而不是调用。
当某些东西需要引用时,您不会调用它…而是为其分配引用(第一个示例)。
当您要专门调用一个函数时,可以使用()(第二个示例)进行调用。但是请注意,在第二个示例中,仍然有对分配给该函数的引用onclick-它只是一个匿名函数。
()
可能更重要的部分是:
有人认为您想这样做:
element.onclick = funcRef();
但这会立即执行该函数(由于()),并将其返回值分配给onclick。除非返回值 是 一个函数,否则这不是您想要的。
我认为这个故事的寓意是,当您希望/需要立即执行某项操作时,可以调用该函数。如果需要该函数供以后使用或需要存储,则不要调用它。