【发布时间】:2020-06-01 23:48:40
【问题描述】:
我正在尝试创建一个简单的函数来检查数组中的所有项目是否有序,但它给了我一些不需要的行为。我想出了这个:
const isArrayInOrder = (array) => {
let lowNum = Number.NEGATIVE_INFINITY;
array.forEach((element, index) => {
if (element < lowNum) {
console.log("False");
return false;
}
lowNum = element;
});
console.log("True!");
return true;
};
let testArray = [1, 2, 3, 4, 7, 11, 22, 31, 800];
isArrayInOrder(testArray);
let testArray2 = [-800, -30, -5, 0, 10, 55, 200, 2000, 1999];
isArrayInOrder(testArray2);
使用testArray 调用isArrayInOrder() 返回true,正如预期的那样。
用testArray2 调用isArrayInOrder() 会返回false,但随后会意外执行函数底部的console.log("True!") 命令。
在我看来,一旦return false 被击中,应该是函数的结尾,对吧?那么它是如何做到这一点的console.log?
【问题讨论】:
-
.forEach()方法完全忽略返回值。return语句退出 one 函数,即最直接包含它的函数。
标签: javascript function ecmascript-6