[英]Why does this Javascript function always return true?
我构建了一个函数every应该遍历一个数组并返回true如果对所有元素执行的操作(例如 element < 10)为true 。 这是我的代码:
function every(array, action) {
var trueOrFalse = true
for (var i = 0; i < array.length; i++)
trueOrFalse = trueOrFalse && action(array[i]);
if (trueOrFalse = true) return true;
else return;
}
array1 = [1,2,3,4,5,6,7,8,9,10,11]
console.log(every(array1, function(element) {
return element < 10
}))
我看不出有什么不对。 使用array1 ,即使它包含大于 10 的数字,它也会返回true 。问题出在哪里?
谢谢
if (trueOrFalse = true) return true;
应该
if (trueOrFalse == true) return true;
您需要评估 trueOrFalse 是否等于 true 对于您需要双重等于
if (trueOrFalse == true) return true;
否则,您只会使 trueOrFalse 的值与 true 相同
奖励积分:
if (trueOrFalse === true) return true;
使用三个等号是评估完全相同的类型和值。 这在这里不是必需的,但知道它很有用。
您的条件使用了不正确的运算符,您应该使用==
运算符。
您可以使用if (trueOrFalse == true) return true;
或者
你可以把它写成if (trueOrFalse) return true;
它仍然会像if( true )
一样评估它
您可以删除if
语句并依靠良好的旧布尔代数!
function every(array, action) {
var trueOrFalse = true
for (var i = 0; i < array.length; i++)
trueOrFalse = trueOrFalse && action(array[i]);
return trueOrFalse;
}
array1 = [1,2,3,4,5,6,7,8,9,10,11]
console.log(every(array1, el => el < 10));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.