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