js 的四种for循环(forEach的返回值异常),测试满足条件的return效果
for
结论:
- for中,return直接 结束for循环和外部函数,并且循环返回值是函数的值
- 可以在for中操作数组长度,数组每次循环都会去判断长度,但是需要对i做对应加减
setFor() {
let a = [1, 2, 3, 4, 5, 6, 7, 8, 9];
for (let item = 0; item < a.length; item++) {
console.log(a[item]);
if (a[item] === 4) {
return a[item];
console.log("是");
}
}
console.log("for函数的return是否会执行");
}
console.log(this.setFor())
for in
结论:
- for in 中,return直接结束for in循环和外部函数,并且循环返回值是函数的值
setFor() {
let a = [1, 2, 3, 4, 5, 6, 7, 8, 9];
for (let item in a) {
console.log(a[item]);
if (a[item] === 4) {
return a[item];
console.log("是");
}
}
console.log("for函数的return是否会执行");
}
console.log(this.setFor())
for of
结论:
- for of 中,return直接结束for of循环和外部函数,并且循环返回值是函数的值
setFor() {
let a = [1, 2, 3, 4, 5, 6, 7, 8, 9];
for (let item in a) {
console.log(a[item]);
if (a[item] === 4) {
return a[item];
console.log("是");
}
}
console.log("for函数的return是否会执行");
}
console.log(this.setFor())
forEach - 重点
结论:
- forEach中,return不会结束forEach循环,不会跳出函数,函数返回值为空
setFor() {
let a = [1, 2, 3, 4, 5, 6, 7, 8, 9];
a.forEach((item) => {
console.log(item);
if (item === 4) {
return item;
console.log("是");
}
});
console.log("for函数的return是否会执行");
}
console.log(this.setFor());
forEach异常情况 - 例子
- 因为 forEach 的 return 不会直接结束循环和函数,当满足条件时,也不会直接返回true,结果始终为假
- 使用其他的for可以解决这个问题
fors: any[] = [1,12,54,1,6,156,1,245,1,5,1,4,51,687,1,684,18,416];
doSubmit(): void {
console.log('表单提交');
if (this.doFlage()) {
console.log('为真');
} else {
console.log('为假');
}
}
doFlage() {
this.fors.forEach((item, index) => {
if (item == 1) {
console.log(index);
return true;
}
});
return false;
}