为什么 for...of 语句中的三元运算符不起作用?

Why is the ternary operator in the for...of statement not working?

我不确定为什么三元运算符在此示例中不起作用。我以前见过它以类似的方式使用,但我无法让它在此测试中正常工作。任何帮助将不胜感激!

const numbers = [1, 2, 3, 4, 5];

console.log(includes(numbers, 4));
//This works fine
function includes(array, searchElement) {
    for (let element of array)
        if (element === searchElement)
            return true;
    return false;
}

这个解决方案工作正常,但是当我尝试使用三元运算符时,我总是得到 false。

console.log(includes2(numbers, 4));

function includes2(array, searchElement) {
    for (let element of array) {
        return (element === searchElement ? true : false);
    }
}

让我们添加块并将条件运算符转换回 if:

第一个例子:

function includes(array, searchElement) {
    for (let element of array) {
        if (element === searchElement) {
            return true;
        }
    }
    return false;
}

第二个例子:

function includes2(array, searchElement) {
    for (let element of array) {
        // return (element === searchElement ? true : false);
        if (element === searchElement) {
           return true;
        }
        return false;
    }
}

注意 return false; 语句的位置。在第一种情况下,您 return 在循环之后。在第二种情况下,您 return 在循环内,即函数将始终在循环的第一次迭代中终止。