在javascript中的foreach循环语法

时间:2017-04-14 18:08:02

标签: javascript loops

将myArray视为对象数组。

这两段代码是否相同?

myArray.forEach((item) => {
  return doAnAction(item);
});


myArray.forEach((item) => {
      doAnAction(item);
    });

它们中的任何一个在语法方面更好吗?如果是,为什么?

3 个答案:

答案 0 :(得分:3)

更好的问题是,为什么你不直接使用函数作为回调,比如

myArray.forEach(doAnAction);

回调必须遵循Array#forEach的API,即

  

为每个元素执行的函数,带有三个参数:

     
      
  • currentValue :数组中正在处理的当前元素。
  •   
  • index :数组中正在处理的当前元素的索引。
  •   
  • 数组forEach()正在应用的数组。
  •   

如果只需要元素,则可以直接使用给定的回调而不进行任何映射。

答案 1 :(得分:1)

据我所知,这两者之间没有区别,因为你提供了一个匿名函数来应用于Array中的每个元素,而第一个函数确实返回doAnAction(item)的结果(无论如何都被忽略)和第二个没有。

所以他们真的是等同的,第二个对我的预期意义更有意义。

答案 2 :(得分:1)

这不是forEach循环所特有的。这只是ES6语法。

使用ES5,这是正确的语法:

myArray.forEach(function (item) {
  doAnAction(item);
});

使用ES6,您有更多可能性:

// Solution #1
myArray.forEach((item) => {
  doAnAction(item);
});

// Solution #2
myArray.forEach(item => {
  doAnAction(item);
});

// Solution #3
myArray.forEach(item => doAnAction(item));