为什么这个Javascript函数总是返回true?
我构建了一个函数,该函数应该遍历数组,如果对所有元素执行的操作(例如element<10)为true,则返回true。这是我的密码:为什么这个Javascript函数总是返回true?,javascript,Javascript,我构建了一个函数,该函数应该遍历数组,如果对所有元素执行的操作(例如element
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,我考虑过这个选项。我只是好奇为什么我的力不起作用。