我一直在为何时接收/传递参数给 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
事件处理程序,它向 handleChange()
函数提供数据。它甚至在文档中指出:
The function receives an Event object as its sole argument.
但是,我很难理解 handleChange()
在 Event 对象没有接受任何参数的括号时是如何接收它的?
input.onchange = handleChange;//括号在哪里?
Event 对象是全局对象吗?handleChange()
是如何操纵它的?如果是这样的话,你不能在定义函数时省略 e
参数吗?
最佳答案
在相关行中,您将一个方法指定为处理程序(从字面上看,将输入对象的属性设置为方法引用)。您没有调用该方法。浏览器然后负责创建一个 Event
对象并将其传递给 handleChange
每次它检测到一个适当的 onChange
事件已经发生地点。
告诉你的 friend 披萨店的电话号码和你的 friend 在不同的时间点了五次不同的披萨是有区别的。
关于javascript - JS 函数缺少参数,仍然有效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60519903/