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
的结束位置明确化,这将更容易发现。