首页 > 解决方案 > 为什么这个函数返回未定义?

问题描述

我想检查参数之一是否相等3。如果确实如此,我想返回 true 但我得到了undefined。这是为什么 ?

function isThree(...args){
  args.forEach(val => {
    if(val === 3){
      return true;
    } else{
      return false;
    }
  })
};
console.log(isThree(1,2,3,4,5));

标签: javascriptspread

解决方案


与创建新范围但不在单独函数中执行的 for 循环不同,forEach 在单独函数中执行。即,从 forEach 处理程序内部返回也不会从外部函数返回。

let x = () => {
  [1, 2, 3].forEach(v => {
    console.log(v); // 1 2 3
    return v;
  })
  return 0;
};
console.log(x()); // 0

let y = () => {
  for (let v = 1; v <=3; v++) {
    console.log(v); // 1
    return v;
  }
  return 0; // never reached
};
console.log(y()); // 1


推荐阅读