window.onload = function() {
document.getElementById('clickMe').onclick = runTheExample;
}
function runTheExample() {
alert('running the example');
}
这是 id = clickMe 的 html 输入按钮的 onclick
事件的简单事件处理程序。
在第 2 行中,为什么调用函数 runTheExample
后没有紧跟 ()
?我认为要调用一个函数,您必须在开/闭括号中将它期望的任何变量/对象传递给它,如果该函数不需要任何东西,您仍然必须包括开闭括号,如 runTheExample()
。
最佳答案
document.getElementById('clickMe').onclick = runTheExample;
这里的目的不是调用runTheExample(),而是将对函数runTheExample的引用分配给onclick事件。 p>
在内部,当 onclick 事件被触发时,Javascript 能够通过您在上面的代码中提供的引用调用函数 runTheExample。
片段
var myFunction = function() { return 42; };
// Assigning the reference
myObject.callback = myFunction;
myObject.callback(); // Has the same effect as calling myFunction();
// Assigning by calling the function
myObject.callback = myFunction();
myObject.callback; // Returns 42
myObject.callback(); // Exception! Cannot call "42();"
这不是特定于 Javascript 的。通过引用传递函数以多种语言提供。
关于javascript - 为什么 Javascript 函数调用在函数名后不包含 '()'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14250318/