js中forEach与return使用问题

今天遇到个bug,也是工作中经常遇到的问题,如果不注意,就会给自己留个坑。

是一段 “检查用户输入”的代码,对于表单中的必填信息进行逐一检查,如果用户没填或者填错则弹框提示。

如下为示例代码:

数据
两段检查代码

有两项检查,一个是检查数组nameList,一个是检查isCheck,要求如果一项不符合要求,则弹框报错返回。现在nameList中有两条数据的abroad=true,则第一段检查不通过,应该弹框:“有出国同学”,结果却弹出“有未通过同学”。

这里的问题就在于“forEach”,其语法:

array.forEach(function(currentValue, index, arr), thisValue)

forEach的第一个参数是回调函数,也就是上面第一个项检查的 return 是回调函数的返回,而不是外层函数体的返回,nameList 中有两条符合条件,则返回两次。所以这里的 return 完全没起到返回 checkStudent 函数结尾的作用。如果把forEach改成for循环,就不会出现该问题。不改for循环,增加两个判断也可以解决这个问题。

增加判断

第一个判断:防止条件进入两次。

第二个判断:防止流程继续走下去。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容