javascript - JS 函数缺少参数,仍然有效吗?

标签 javascript function parameters scope arguments

我一直在为何时接收/传递参数给 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/

相关文章:

javascript - 为什么 console.log(document.getElementById( 'blah' ))) 在 Chrome 中给出不同的日志消息?

javascript - Jquery - Cycle 插件 - 选择器找到零元素

python - 使用字典调用带有参数的函数

arrays - Julia 中以 DataArrays 和 Arrays 作为参数的函数

JavaScript 方法中,一种有效,另一种无效

javascript - 如何将 PHP 数组传递给 JavaScript 变量?

c# - aws Lambda 函数中的 Webresponse c#

function - 了解 lua 函数如何工作?

javascript - 在 Javascript 中将参数发送到原型(prototype)

Android AsyncTask 作为方法参数