繁体   English   中英

为什么这个 Javascript 函数总是返回 true?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM