【问题标题】:Why is the ternary operator in the for...of statement not working?为什么 for...of 语句中的三元运算符不起作用?
【发布时间】:2018-11-29 18:57:22
【问题描述】:

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

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

【问题讨论】:

  • 你的说法不一样。如果 if 为真,您的第一个块仅返回真。并且仅在 for 循环完成后才返回 false。第二个 sn-p always 在 for 中返回,无论如何
  • 太棒了!谢谢,我不知道! :)
  • 顺便说一句,三元的返回与条件相同。
  • 另外,由于您的查找逻辑看起来只是身份检查,因此可以简化为简单的indexOf() > -1 检查。你的逻辑是在重新发明轮子。
  • 这是一个很好的例子,说明为什么在 forif 块中包含大括号是个好主意,即使它们不是严格要求的。如果您明确说明 forif 的结束位置,这将更容易发现。

标签: javascript ternary-operator conditional-operator


【解决方案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; 语句的位置。在第一种情况下,您在循环后返回。在第二种情况下,您返回循环内部,即函数将始终在循环的第一次迭代中终止。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-04
    • 2020-03-13
    • 2021-06-12
    • 1970-01-01
    • 2013-05-20
    • 2021-07-28
    • 1970-01-01
    相关资源
    最近更新 更多