将myArray视为对象数组。
这两段代码是否相同?
myArray.forEach((item) => {
return doAnAction(item);
});
myArray.forEach((item) => {
doAnAction(item);
});
它们中的任何一个在语法方面更好吗?如果是,为什么?
答案 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));