我一直在挣扎何时接收/传递参数到JavaScript函数的想法,阅读有关 onchange
event handlers at MDN的这篇文章有助于我明确我的问题。这是文章中的代码:
<input type="text" placeholder="Type something here, then click outside of the field." size="50">
<p id="log"></p>
let input = document.querySelector('input');
let log = document.getElementById('log');
input.onchange = handleChange; //<<< Question on this <<<<<<
function handleChange(e) {
log.textContent = `The field's value is
${e.target.value.length} character(s) long.`;
}
我看到
input
具有一个onchange
事件处理程序,该事件处理程序将数据提供给ojit_code函数。它甚至在文档中指出:但是,我很难理解
handleChange()
在没有括号的情况下如何接收Event对象?handleChange()
Event对象是全局对象,而
input.onchange = handleChange; // Where's the parentheses?
是如何操作它的?如果是这种情况,您在定义函数时是否可以忽略handleChange()
参数? 最佳答案
在所讨论的行中,您正在将一个方法分配为处理程序(实际上,将输入对象的属性设置为方法引用)。您没有在调用该方法。然后,浏览器负责创建Event
对象,并在每次检测到适当的handleChange
事件发生时将其传递给onChange
。
告诉您的 friend 披萨店的电话号码和您的 friend 在五个不同的时间订购不同的披萨之间是有区别的。