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

时间:2017-05-10 15:17:01

标签: javascript

我构建了一个函数每个,它应该迭代一个数组并返回 true 如果动作(例如,元素< 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 ,即使它包含数字&gt;,它也会返回 true 。 10。 问题出在哪里?

由于

3 个答案:

答案 0 :(得分:4)

if (trueOrFalse = true) return true; 

应该是

if (trueOrFalse == true) return true;

答案 1 :(得分:0)

您的条件是使用了错误的运算符,您应该使用==运算符。

您可以使用if (trueOrFalse == true) return true;

您可以将其编写为if (trueOrFalse) return true;,仍会将其评估为if( true )

答案 2 :(得分:0)

您可以删除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));