Javascript:For循环,需要使用if/else帮助理解此练习吗

Javascript:For循环,需要使用if/else帮助理解此练习吗,javascript,loops,Javascript,Loops,我做的这个练习已经得到了答案,但是听了解释后,还是不明白。以下是练习: “编写一个函数isUniform(),它将数组作为参数 如果数组中的所有元素都相同,则返回true“ 这就是解决办法 function isUniform(numArr) { var first = numArr[0]; for (var i = 1; i < numArr.length; i++) { if (numArr[i] !== first) { return false;

我做的这个练习已经得到了答案,但是听了解释后,还是不明白。以下是练习:

“编写一个函数isUniform(),它将数组作为参数 如果数组中的所有元素都相同,则返回true“

这就是解决办法

function isUniform(numArr) {
  var first = numArr[0];
   for (var i = 1; i < numArr.length; i++) {
     if (numArr[i] !== first) {
       return false;
     }
  }
  return true;
}
函数是统一的(numArr){
var first=numArr[0];
对于(变量i=1;i
我几乎完全正确,但我用“return true”做了一个else语句,结果不起作用。为什么它在for循环之外使用“returntrue”呢? (编辑)我第一次是这样做的:

function isUniform(numArr) {
  var first = numArr[0];
  for (var i = 1; i < numArr.length; i++) {
    if (numArr[i] !== first) {
      return false;
    }
    else {
      return true;
    }
  }
}
函数是统一的(numArr){
var first=numArr[0];
对于(变量i=1;i
它之所以有效,是因为它是函数中的最终语句。基本上,如果for循环内部的条件不会被触发,那么函数将返回true。如果在循环外部返回true,那么它将检查循环中的每个元素,直到其中一个元素与
if
test匹配,或者它到达循环的末尾

如果在循环中返回true,那么它将始终对第一个元素执行
return
语句,然后停止循环

我几乎正确,但我做了一个“返回”的其他声明 “是的”,但它不起作用

下面的解决方案在某些情况下会返回错误的结果,因为它所做的只是在数组中找到等于
first
变量的第一个元素,并返回true,即使它没有搜索整个数组

   function isUniform(numArr) {
      var first = numArr[0];
      for (var i = 1; i < numArr.length; i++) {
        if (numArr[i] !== first) {
          return false;
        }
        else {
          return true;
        }
      }
    }
让我们假设这是变量
first

first  = 10;
first = 10;
下面的
if语句
位于
for循环中
基本上表示如果变量
first(10)
不等于当前索引
i
nth
数组中的数字),则
返回false
。这是有意义的,因为如果此时变量
first
与指定
索引处的元素不相同,例如
索引2(编号13)
,则无需继续。因此,它将
返回
false

if (numArr[i] !== first) {
     return false;
}
现在让我们假设数组是:

[10,10,10,10,10]
让我们假设这是变量
first

first  = 10;
first = 10;
现在,变量
first
将与数组中的每个
元素进行比较,它表示“10不等于当前元素”。在这种情况下,这是错误的,因为
10等于10
。这将沿阵列向下传播,控件将永远不会在if块内传递。最后,控制传递到
return
true语句

if (numArr[i] !== first) {
     return false;
}

比如说,你有一台坏了的打印机,有时会把打印出来的东西弄乱。现在你打印了20份,想知道每张纸是否都好。因此,现在您必须反复比较每个副本,直到找到一个不匹配的副本(并且知道是时候换一台新打印机了吗?)。或者您已经通过了漏洞堆栈,并且知道每个副本都很好(并且您白白浪费了时间)。

请同时复制其他解决方案。只是比较一下。。。但这仍然是将第一项与数组的其余部分进行比较…好的,这是有意义的。我对循环的工作原理有一个误解。我认为它会检查整个循环,以评估它是真是假。但发生的是,一旦他遇到其中一个陈述,它就会停止。例如,如果我有[1, 1, 1,3 ],它会考虑到,因为第二个元素是相等的,这是真的。如果我做了一个while循环呢?while(numArr[i]==first){return true;i++}console.log(“false”);这行吗?@fields这没道理。您可以中断或控制
for
while
do..while
循环中的迭代,使用
continue
break
,但
return
将始终结束函数。上述解决方案之所以有效,是因为如果找到不匹配的值,或者如果
for
循环自行终止,则假定未找到不匹配的值,则该解决方案会立即失败。