Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么for…of语句中的三元运算符不起作用?_Javascript_Ternary Operator_Conditional Operator - Fatal编程技术网

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

Javascript 为什么for…of语句中的三元运算符不起作用?,javascript,ternary-operator,conditional-operator,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 ===

我不知道为什么三元运算符在这个例子中不起作用。我以前见过它以类似的方式使用,但我不能让它在这次测试中正常工作。任何帮助都将不胜感激

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

允许添加块并将条件运算符转换回
(如果
):

第一个例子:

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

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

您的语句不同。只有当if为true时,第一个块才会返回true。并且它只在for循环完成后返回false。第二个代码段总是在for中返回,不管是什么!谢谢,我不知道!:)顺便说一句,三元组的返回值与条件的返回值相同。此外,由于查找逻辑看起来只是一个身份检查,因此可以简化为一个简单的
indexOf()>-1
检查。你的逻辑是在半改造轮子。这是一个很好的例子,说明了为什么在
中包含
for
if
块的花括号是一个好主意,即使它们不是严格要求的。如果您将
for
if
的结束位置明确化,这将更容易发现。