Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中的foreach循环语法_Javascript_Loops - Fatal编程技术网

javascript中的foreach循环语法

javascript中的foreach循环语法,javascript,loops,Javascript,Loops,将myArray视为对象数组 这两段代码等效吗 myArray.forEach((item) => { return doAnAction(item); }); myArray.forEach((item) => { doAnAction(item); }); 它们中有哪一个在语法方面更好?若有,原因为何 据我所知,这两者之间没有区别,因为您提供了一个匿名函数应用于数组中的每个元素,而第一个函数确实返回doAnActionitem的结果,但无论如何都会被

将myArray视为对象数组

这两段代码等效吗

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


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

它们中有哪一个在语法方面更好?若有,原因为何

据我所知,这两者之间没有区别,因为您提供了一个匿名函数应用于数组中的每个元素,而第一个函数确实返回doAnActionitem的结果,但无论如何都会被忽略,第二个函数不会


所以它们实际上是等价的,第二个对我来说更有意义。

据我所知,这两个元素之间没有区别,因为您提供了一个匿名函数来应用于数组中的每个元素,而第一个确实返回doAnActionitem的结果,但无论如何都会被忽略,第二个不会


因此,它们实际上是等价的,第二个对我来说更具意义。

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

myArray.forEach(doAnAction);
回调必须遵循的API,即

要为每个元素执行的函数,包含三个参数:

currentValue:数组中正在处理的当前元素。 索引:数组中正在处理的当前元素的索引。 数组:应用forEach的数组。
如果您只需要元素,那么您可以直接使用给定的回调,而不需要任何映射。

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

myArray.forEach(doAnAction);
回调必须遵循的API,即

要为每个元素执行的函数,包含三个参数:

currentValue:数组中正在处理的当前元素。 索引:数组中正在处理的当前元素的索引。 数组:应用forEach的数组。
如果您只需要元素,那么可以直接使用给定的回调,而不需要任何映射。

这不是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));

这并不特定于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));

是的,它们是等价的。forEach不使用其回调的返回值。有关更多信息,您可以随时查看。这是一个很好的资源。它们在语法上是相同的,但其中一个有着无意义的回报。如果你问的是代码风格,那么1个基于意见的问题在SO 2上是离题的,我个人更喜欢后者,因为添加return意味着你在使用return值,而return值是没有的。是的,它们是等价的。forEach不使用其回调的返回值。有关更多信息,您可以随时查看。这是一个很好的资源。它们在语法上是相同的,但其中一个有着无意义的回报。如果你问的是代码风格,那么1个基于意见的问题在SO 2上是离题的,我个人更喜欢后者,因为添加return意味着你使用的是返回值,而没有返回值。他们没有问语法。他们问的是返回是否会改变这一点,如果是的话,是如何改变的。实际上我问的是语法:它在文章的标题中,为其他观众澄清了我的文章!Thanks@Rose是的,这就是我严格回答语法问题的原因;我不知道您的doAnAction函数是什么样子的,但是请注意,在forEach循环中使用return通常是很尴尬的。将return与其他核心数组方法(如map、reduce、filter、some、every等)一起使用要频繁得多。他们没有询问语法。他们问的是返回是否会改变这一点,如果是的话,是如何改变的。实际上我问的是语法:它在文章的标题中,为其他观众澄清了我的文章!Thanks@Rose是的,这就是我严格回答语法问题的原因;我不知道您的doAnAction函数是什么样子的,但是请注意,在forEach循环中使用return通常是很尴尬的。与其他核心数组方法(如map、reduce、filter、some、every等)一起使用return更为频繁。