【发布时间】: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检查。你的逻辑是在重新发明轮子。 -
这是一个很好的例子,说明为什么在
for和if块中包含大括号是个好主意,即使它们不是严格要求的。如果您明确说明for和if的结束位置,这将更容易发现。
标签: javascript ternary-operator conditional-operator