回调函数中输入参数的数量重要吗?
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);
因此,如果您打算使用回调,您可以自由定义带有参数的回调;如果您想忽略它,则可以省略该参数。
我目前正在通过 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);
因此,如果您打算使用回调,您可以自由定义带有参数的回调;如果您想忽略它,则可以省略该参数。