回调函数中输入参数的数量重要吗?

Do number of input parameters in a callback function matter?

我目前正在通过 Udemy 上的课程学习 Java 脚本,我偶然发现了一些我觉得很奇怪的东西。 它是关于“回调函数”的,课程中的实现使用匿名函数。

例如

var button = document.querySelector("button"); 
button.addEventListener("click", function() { console.log("hi"); } ); 
document.addEventListener("keydown", function(event) { console.log(event); } );

第二行,回调函数是一个匿名函数,没有输入参数。第三行,匿名函数有一个输入参数:event.

我觉得我们假设回调可以处理 0 个或 1 个输入参数,但我们如何确定?如果我定义一个带有 3 个输入参数的匿名函数怎么办?有关系吗?

两条线都可以,所以我对回调函数的灵活性感到非常惊讶。

这不是回调参数的功能。这就是函数在 javascript.

中的一般行为方式

用一个参数定义的函数可以用 javascript 中的零个、一个或多个参数调用而不会出现任何语法错误:

function testing (a) {
    console.log(a);
}

testing();                   // will log undefined
testing('hello');            // logs "hello"
testing('hello', 'world');   // logs "hello"

这意味着:

  • 可以使用任意数量的参数调用具有零参数的函数
  • 一个有很多参数的函数可以在没有参数的情况下被调用

DOM 事件将始终使用一个参数调用您的函数(除了旧版本的 IE 将使用零参数调用它们):

your_callback(event);

因此,如果您打算使用回调,您可以自由定义带有参数的回调;如果您想忽略它,则可以省略该参数。