Javascript 与window.onload混淆

Javascript 与window.onload混淆,javascript,javascript-events,Javascript,Javascript Events,我只是从一本书上复制粘贴了以下内容: window.onload = init; function init() { var button = document.getElementById("addButton"); button.onclick = handleButtonClick(); } function handleButtonClick() { alert("Button has been clicked"); } 问题是当我加载页面时,而不是当我单击按钮时,会出现警报。有人知道

我只是从一本书上复制粘贴了以下内容:

window.onload = init;
function init() {
var button = document.getElementById("addButton");
button.onclick = handleButtonClick();
}
function handleButtonClick() {
alert("Button has been clicked");
}
问题是当我加载页面时,而不是当我单击按钮时,会出现警报。有人知道为什么吗

谢谢

变化

button.onclick = handleButtonClick();

没有这个

您的原始行,button.onclick=handleButtonClick;调用handleButtonClick函数,然后将其返回值指定给button.onclick。一模一样

var a = foo();
…调用foo,然后将其返回值分配给a

您不想这样做,只想将函数引用分配给onclick。因此,您通过函数名引用函数,而不调用它,也不进行更改。

button.onclick = handleButtonClick();

没有这个

您的原始行,button.onclick=handleButtonClick;调用handleButtonClick函数,然后将其返回值指定给button.onclick。一模一样

var a = foo();
…调用foo,然后将其返回值分配给a

您不想这样做,只想将函数引用分配给onclick。因此,您通过函数名引用函数,而不调用它,也不使用