javascript - while 循环的基本概念

标签 javascript loops while-loop

下面是判断两个字符串的长度和字符是否相等的正确代码。

function equal(x, y) {
    if(x.length != y.length)
         return false
    var i = 0;
    while(i < x.length) {
       if(x.charAt(i) != y.charAt(i))
          return false
       i++
    }
    return true
  }

equal("hello", "hello") // true
equal("hello", "heyyy") // false

我自己修改了它,我认为这对我来说是合乎逻辑的。但是我的代码(如下所示)在它们的字符内容不同时返回 true。谁能帮我看看我的版本有什么问题?

function equal(x, y) {
  if(x.length != y.length)
     return false
  var i = 0;
  while(i < x.length) {
     if(x.charAt(i) != y.charAt(i))
        return false
     else return true
    i++
   }
}

equal("hello", "hi") //false
equal("hello", "heyyy") //true

最佳答案

这是因为您在循环的第一次迭代中返回了 true:

 if(x.charAt(i) != y.charAt(i))
    return false
 else return true

您需要在函数结束时返回 true:

function equal(x, y){
  if(x.length != y.length)
     return false
  var i = 0;
  while(i < x.length){
     if(x.charAt(i) != y.charAt(i))
        return false
    i++
   }
   return true
}

另外,就我个人而言,我会在 for 循环中执行此操作 :)

你也可能会遇到越界的问题。这是一个 demo显示长度不一致时会发生什么。谢天谢地,您进行了长度检查,所以这应该不是问题。

关于javascript - while 循环的基本概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25048868/

相关文章:

javascript - 函数在 return 语句之前返回空对象

python - 此嵌套循环的列表理解语法是否正确?

c++ - 计算用户使用循环输入的整数数量

c - 修改并替换C中char数组中的值

java - 如何创建一个从 ArrayList 的一行到另一行拆分每一行的循环?

php - 通过ajax从php到jquery的数组

javascript - Rails 3.2.3 中的 Twitter-Bootstrap

javascript - 返回页面时保持 Accordion 选项卡处于事件状态

SQL Server : Endless WHILE EXISTS loop

c++ - char类型导致循环爆炸