首页 > 解决方案 > 回调函数中输入参数的数量是否重要?

问题描述

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

例如

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

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

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

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

标签: javascriptcallback

解决方案


这不是回调参数的功能。这就是函数在 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);

因此,如果你打算使用它,你可以自由地用一个参数定义你的回调,或者如果你想忽略它,你可以省略它。


推荐阅读