javascript - ES6 类方法在 forEach 循环内不返回任何内容

标签 javascript function return ecmascript-6 arrow-functions

出于某种原因,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()
  }

关于javascript - ES6 类方法在 forEach 循环内不返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39645392/

相关文章:

javascript - 如何从自定义的 forEach 函数中获取返回值以在回调中使用?

javascript - Instafeed.js 不工作

javascript - 如何通过向网格提供不同的 url 来重新加载网格

r - 通过最小化 R 中的方差对数据进行分组

Swift 初学者需要详细说明语法 - 传递和返回函数

java - 根据返回值计算平均值

c++ - 返回一个空的 C 字符串

javascript - 如何一次进行两个验证并得到两个结果

javascript - Jquery Ajax 安全问题

c - 基于CLRS教科书的归并排序