gpt4 book ai didi

javascript - 为什么这个函数在第一次迭代后不退出?

转载 作者:行者123 更新时间:2023-11-30 15:03:37 25 4
gpt4 key购买 nike

我确实理解以下函数的一般工作原理。但是为什么它在第一次迭代后不退出(当有回文时)?它检查 if 语句中的第一个字符和最后一个字符,这是真的,什么应该(在我的逻辑中)执行 return 语句......感谢您帮助解释这个! :)

function palindrome(str) {
var lowerCaseStr = str.toLowerCase();
for (var i = 0; i < lowerCaseStr.length; i++)
debugger;
if (lowerCaseStr[i] === lowerCaseStr[lowerCaseStr.length - i - 1]){
return true;
}
return false;
}

最佳答案

它不会在第一次迭代后退出,而是在 lowerCaseStr.length 迭代后退出,因为您的代码等同于下面的代码

function palindrome(str) {
var lowerCaseStr = str.toLowerCase();
for (var i = 0; i < lowerCaseStr.length; i++){
debugger;
}

if (lowerCaseStr[lowerCaseStr.length] === lowerCaseStr[-1]){
return true;
}

return false;
}

也就是说,它迭代 lowerCaseStr.length; 次,但它对每次迭代所做的唯一事情是调用 debugger 之后它测试数组中不存在的元素'存在。 (两个指数都超出范围)。这导致两次 undefined undefined === undefined 的比较始终为真。

如果根据 bool 表达式返回 true 或 false 作为侧节点,则考虑使用一个 return 语句:

return (lowerCaseStr[i] === lowerCaseStr[lowerCaseStr.length - i - 1]);

关于javascript - 为什么这个函数在第一次迭代后不退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46130411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com