ES6类方法在forEach循环中不返回任何东西

ES6 class methods not returning anything inside forEach loop

本文关键字:返回 任何东 循环 类方法 forEach ES6      更新时间:2023-09-26

由于某种原因,PollClass中的方法getTwo()不会返回2,而是返回undefined。如果我将return语句置于.forEach()循环之外,则会返回一个值。

class Poll {
  constructor(name) {
    this.name = name;
    this.nums = [1, 2, 3];
  }
  getTwo() {
    this.nums.forEach(num => {
      if (num === 2) return num;
    })
  }
}
const newPoll = new Poll('random name');
console.log(newPoll.getTwo()); // returns undefined, not 2

这是关闭的问题,ES 6,或整个其他问题?

箭头函数仍然是一个函数,您只从forEach回调函数返回,而不是从getTwo返回,您还必须从getTwo函数返回。

我们不太清楚为什么要用循环来检查,但是这个概念应该是类似

的东西
getTwo() {
    var n = 0;
    this.nums.forEach(num => {
      if (num === 2) n = num;
    })
    return n; // returns something from getTwo()
  }

正如adeneo所提到的,您必须从getTwo函数返回才能实现您想要的结果。从传递给forEach的回调返回,不管它是否是箭头函数,都不会从forEach本身返回。

除了forEach,您还可以使用find,它可以用更少的代码编写并直接返回:

getTwo() {
  return this.nums.find(num => num === 2);
}