Jes*_*sse 1 javascript syntax javascript-events
window.onload = function() {
document.getElementById('clickMe').onclick = runTheExample;
}
function runTheExample() {
alert('running the example');
}
Run Code Online (Sandbox Code Playgroud)
对于id = clickMe的html输入按钮,这是onclick事件的简单事件处理程序.
在第2行,为什么函数调用runTheExample不会紧跟()?我认为要调用一个函数,你必须在开/关括号中传递它所需的任何变量/对象,如果函数不期望任何东西,你必须仍然包括开括号和右括号runTheExample().
document.getElementById('clickMe').onclick = runTheExample;
Run Code Online (Sandbox Code Playgroud)
这里的目的是不是要叫runTheExample() ,但指定的参考功能runTheExample到的onclick事件.
在内部,当触发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();"
Run Code Online (Sandbox Code Playgroud)
这不是特定于Javascript的.通过引用传递函数有多种语言版本.
仅使用括号来调用(调用)函数.当你分配它时onclick,你只是通过引用传递它.
为了更好地理解这一点,请考虑另一种声明函数的方法:
var runTheExample = function () {
alert('running the example');
}
Run Code Online (Sandbox Code Playgroud)
无论你使用什么方法,runTheExample都会包含对函数的引用(存在一些差异,比如在赋值之前函数引用不可用,但这是一个不同的故事).