addEventListener vs onclick 当回调函数更改时



我的HTML代码如下: 我的问题是,为什么单击按钮 1 时显示"之前"对话框,但在单击按钮 2 时显示"之后"对话框?

<html>
<body>
<button id="b1">Button 1</button>
<button id="b2" onclick="OnClick();">Button 2</button>
<script>
var OnClick = function(){alert("before");};
document.getElementById("b1").addEventListener("click", OnClick);
var OnClick = function(){alert("after");};
</script>
</body>
</html>

JSFiddle link: https://jsfiddle.net/72chrqnf/

在更改指向其他函数的变量之前,将OnClick计算为第一个函数的原因。当计算此行时:

document.getElementById("b1").addEventListener("click", OnClick);

它评估OnClick并得出以下结果:

document.getElementById("b1").addEventListener("click", [a reference pointing to the function])

因此,更改OnClick不会影响之后。

最新更新