从每个迭代器块内的函数返回语句

问题描述

如果我在 every 块内的条件内编写 return 语句 - 那么它会退出 every 并从函数返回,或者它只是像从 arrry.map 数组返回一样。

export default class App extends Component {
  state = {
    list: [1,2,3,4,5]
  };

  static getFirstNumberWhichis5(list) {
    list.every((val) => {
      if (val === 5) {
        return 5;
      }
    });
    return 7;
  }

  componentDidMount() {
    console.log(App.getFirstNumberWhichis5(this.state.list));
  }

  render() {
    return (
      <div className="App">
        <h1>Hello CodeSandBox</h1>
        <h2>Start editing to see some magic happen!</h2>
      </div>
    );
  }
}

我创建了一个代码示例 - 并发现它永远不会从函数返回 - 但是返回返回到什么 - 在每个(甚至是 forEach 中)。

上述实现是否有任何例外?

解决方法

.every 将在回调返回 falsey 值后立即终止,或者在您的情况下,如果根本没有调用 return,如果 {{1} } 测试失败。

由于您随后没有测试调用 val === 5 的(布尔)结果,因此您的 .every 函数将始终返回 7。