为何我编写的JavaScript回文检测函数执行后返回undefined
问题排查思路
- 首先定位返回undefined的直接原因:
palindromes函数没有显式返回执行结果。你在if和else分支中仅调用了checkString函数,但没有将该函数的返回值向外传递,JavaScript中没有写return语句的函数默认返回undefined。
修复方法:将两个分支的调用逻辑改为返回结果:if (check === check.toUpperCase()) { const newString = reverseString.slice(0, 1).toUpperCase() + originalString.slice(1); // 新增return返回结果 return checkString(originalString, newString); } else { // 新增return返回结果 return checkString(originalString, reverseString); }; - 其次是现有回文判断逻辑存在设计缺陷:你当前的大小写处理逻辑仅适配了首字母大写的场景,没有处理字符串中间字符的大小写差异,也没有考虑空格、特殊符号等干扰字符的情况,会导致大部分混合大小写的回文判断错误。
更简洁合理的实现思路是:先把输入字符串统一转为全小写/全大写,再对比处理后的字符串和它的反转结果是否完全相等即可:
该实现可以直接正确判断const palindromes = function(str) { // 统一转小写,如有需求可额外补充去除空格、标点的处理逻辑 const processedStr = str.toLowerCase(); const reversedStr = processedStr.split('').reverse().join(''); return processedStr === reversedStr; }palindromes("Racecar")的结果为true。
内容的提问来源于stack exchange,提问作者user16343752
相关产品推荐
相关产品推荐

