众所周知,就我不知道,foreach不能用return结束循环,return只能结束foreach的当前循环。然后我就用return,return了一下午,我也是难受了一下午,所以我现在要把这个知识点记录下来。

使用break(会报错)
使用return fasle (只是终止本次循环)
try {
this.eCardRuleDTO.serviceStepList.forEach((i, v) => {
this.startD = 1
this.endD = 2
//如果有两个以上的阶梯
if (this.breakPoint == 1) {
this.startD += parseInt(v)
this.endD += parseInt(v)
}
//进行开始时间结束时间比较
if (parseInt(i.startDays) >= parseInt(i.endDays)) {
throw new Error(
'第' + this.startD + '阶梯,结束时间需要大于开始时间'
)
}
if (!i.startDays) {
throw new Error('开始时间不能为空')
}
if (!i.startDays) {
throw new Error('结束时间不能为空')
}
//进行阶梯费比较
if (!parseInt(i.price)) {
throw new Error('第' + this.startD + '阶梯费用不能为空')
}
//进行两个以上的阶梯费用,则比较前一阶梯结束时间和后一阶梯开始时间
if (this.breakPoint == 1 && this.startD < this.servicesStepLen) {
if (
parseInt(i.endDays) >=
parseInt(this.eCardRuleDTO.serviceStepList[this.startD].startDays)
) {
throw new Error(
'第' +
this.startD +
'阶梯和第' +
this.endD +
'阶梯不能出现重复天数'
)
}
}
})
} catch (error) {
this.$message({
message: error.message,
type: 'warning'
})
// this.$message.warning(e.message)
return
}
博客讲述了在JavaScript中使用return在forEach循环中的误解,强调return不会结束整个循环,只会结束当前迭代。作者通过示例代码展示了如何处理循环中的错误检查,包括对开始和结束日期、阶梯费用等的验证,并在遇到错误时显示警告信息。在遇到错误时,使用了return false来终止当前循环而非break,同时记录了这个经验教训。
914





