问题描述
如果我在 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。