Javascript - Array.prototype.forEach() - 是必要的三个参数吗?

时间:2016-08-28 13:25:46

标签: javascript

Mozilla's Developer Network州:

  

[forEach callback]使用三个参数调用:

     
      
  • 元素值

  •   
  • 元素索引

  •   
  • 正在遍历的数组

  •   

然而,这对我来说有点不清楚。这三个论点都是必要的吗?我写的具体回调不会使用任何这些值。我是否要申报,或者我可以安全地跳过它们吗?

2 个答案:

答案 0 :(得分:5)

你可以放心地跳过它们。

你永远不必声明函数参数。通常,无论您是否准备好接收它们的回调,值都将被传递给回调 - 只有当您的函数需要使用这些参数时才重要。

一个例子是任何事件回调,例如,事件对象 - 报告发生的事情 - 总是作为第一个参数传递。

foo.addEventListener('click', function(evt) {
    //if I never reference the evt object, I need not define the evt argument
}, false);

答案 1 :(得分:1)

与大多数语言不同,javascript不会对调用函数的参数数量执行任何检查。由于javascript回调只是函数,因此对于回调也是如此。

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

可以调用

函数a

a(); // prints undefined
a(1); // prints 1
a(1,2); // prints 1

或任意数量的论点。

如果调用的函数的数量少于定义中的参数,则缺少的参数将设置为undefined

调用函数的所有参数都可用作局部变量arguments