javascript - 为什么 Javascript 函数调用在函数名后不包含 '()'?

标签 javascript syntax dom-events

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/

相关文章:

Javascript "mousemove"事件有时不会触发

javascript - window.onload 与 $(document).ready()

javascript - 有什么方法可以增加 HTML 所需验证消息的显示时间吗?

java - 为什么 System.out.print() 不工作?

javascript - Google Maps API 集成 - map 标记的点击功能,令人头疼

python - 消除 Python 中的一系列 .replace() 调用

syntax - 关键字 var 后的下划线和接口(interface)名称是什么意思?

javascript - 使用java脚本将数据从网站a传递到网站b,然后用作post查询

javascript - jQuery addclass 和 removeclass 按顺序从子到父和反向

javascript - 从 SyntaxHighlighter 中删除多余的空行