Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么这个Javascript函数总是返回true?_Javascript - Fatal编程技术网

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

为什么这个Javascript函数总是返回true?,javascript,Javascript,我构建了一个函数,该函数应该遍历数组,如果对所有元素执行的操作(例如element

我构建了一个函数,该函数应该遍历数组,如果对所有元素执行的操作(例如element<10)为true,则返回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 
}))
函数每个(数组、操作){
var trueOrFalse=true
对于(var i=0;i
我看不出有什么不对劲。 对于array1,即使它包含大于10的数字,也会返回true。 问题出在哪里


谢谢

您需要评估true或False是否等于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;
另一方面,你只需要使trueOrFalse的值与true的值相同

奖励积分:

 if (trueOrFalse === true) return true;
使用三个等号计算的是完全相同的类型和值。这在这里不是必需的,但知道它很有用

if (trueOrFalse = true) return true; 
应该是

if (trueOrFalse == true) return true;
应该是

if (trueOrFalse == true) return true;

您的情况使用了不正确的运算符,您应该使用
=
运算符

如果(trueOrFalse==true)返回true,则可以使用


如果(trueOrFalse)返回true,则可以将其编写为
仍然将其计算为
如果(true)

您的情况使用了不正确的运算符,则应使用
==
运算符

如果(trueOrFalse==true)返回true,则可以使用


如果(trueOrFalse)返回true,则可以将其编写为
仍然将其计算为
if(true)

您可以删除
if
语句并依赖于良好的旧布尔代数

函数每个(数组、操作){
var trueOrFalse=true
对于(var i=0;iel<10));

您可以删除
if
语句,并依赖良好的旧布尔代数

函数每个(数组、操作){
var trueOrFalse=true
对于(var i=0;iel<10));


trueOrFalse=true
是一个赋值。它将
trueOrFalse
设置为
true
,然后顺便返回刚刚设置的值,因此条件始终为true。
if(trueOrFalse==true)
应该是
if(trueOrFalse)
为什么不干脆
返回trueOfFalse
?@Mark Reed谢谢!对于像我这样的初学者来说,这是最有帮助的评论
trueOrFalse=true
是一个赋值。它将
trueOrFalse
设置为
true
,然后顺便返回刚刚设置的值,因此条件始终为true。
if(trueOrFalse==true)
应该是
if(trueOrFalse)
为什么不干脆
返回trueOfFalse
?@Mark Reed谢谢!对于像我这样的初学者来说,这是最有帮助的评论。我可以用更多的解释,而不仅仅是一行更正过的代码。我认为这是一个打字错误,不需要it@MrMysteryGuest如果你认为这是印刷错误,您应该将答案标记为正确答案,然后继续。@mhodges我将从现在开始这样做。可能需要更多的解释,而不仅仅是一行更正的代码。我认为这是一个拼写错误,不需要任何修改it@MrMysteryGuest如果你认为这是印刷错误,您应该将答案标记为这样,然后继续。@mhodges从现在开始我将这样做。优化思想:一旦找到第一个不满足条件的元素,就不需要迭代其余的元素。这叫做“短路”。作为奖励,这还将消除布尔计算代码和隐藏在其中的错误。这有一个内置的数组方法:。有人会提到,为什么不使用内置方法?根本不要使用变量。第一次
操作
给出错误结果时,
立即返回false
。然后在循环后放置
return true
for(vari=0;i
Yes,我考虑过这个选项。我只是想知道为什么我的dind不起作用。优化思想:一旦找到第一个不满足条件的元素,就不需要迭代其余的元素。这叫做“短路”。作为奖励,这还将消除布尔计算代码和隐藏在其中的错误。这有一个内置的数组方法:。有人会提到,为什么不使用内置方法?根本不要使用变量。第一次
操作
给出错误结果时,
立即返回false
。然后在循环后放置
return true
for(vari=0;i
Yes,我考虑过这个选项。我只是好奇为什么我的力不起作用。