由于某些原因,getTwo()
中的方法PollClass
不会返回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还是其他问题?
答案 0 :(得分:7)
箭头函数仍然是一个函数,并且您只从forEach回调函数返回,而不是从getTwo返回,您也必须从getTwo
函数返回。
不清楚为什么你会用循环来检查某种东西,但这个概念就像是
getTwo() {
var n = 0;
this.nums.forEach(num => {
if (num === 2) n = num;
})
return n; // returns something from getTwo()
}
答案 1 :(得分:4)
正如 adeneo 所提到的,您必须从getTwo
函数返回才能达到您想要的效果。从回传到forEach
的回调中,无论其是否为箭头函数,都不会从forEach
本身返回。
除了forEach
,您可以使用find
,您可以用更少的代码编写并直接返回:
getTwo() {
return this.nums.find(num => num === 2);
}