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

时间:2018-11-29 18:57:23

标签: javascript ternary-operator conditional-operator

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

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;
}

此解决方案效果很好,但是当我尝试使用三元运算符时,我总是会出错。

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

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

1 个答案:

答案 0 :(得分:1)

让我们添加块并将条件运算符转换回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;语句的位置。在第一种情况下,循环后返回。在第二种情况下,您将在循环内返回,即该函数将始终在循环的第一次迭代中终止。