下面是判断两个字符串的长度和字符是否相等的正确代码。
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/