JavaScript输入数字时字符串反转函数无法运行如何解决
问题原因
你的函数报错终止的核心原因是参数类型校验的位置错误:
- 你当前的代码会先对入参
words调用字符串专属的split()方法,之后才校验入参是不是字符串类型 - 数字、布尔值这类非字符串类型本身没有
split()方法,传入数字89执行时,会直接抛出Uncaught TypeError: words.split is not a function错误,程序直接中断,根本走不到后面返回null的判断分支
原问题代码
function reverseWords(words) { let eachLetter = words.split(""); let reverseLetter = eachLetter.reverse(); let combineLetter = reverseLetter.join(""); if (typeof words !== "string") { return null; } else { return combineLetter; } } console.log(reverseWords(89));
修复方案
把类型校验逻辑移到所有字符串操作的最前面,入参不符合类型要求时直接提前返回null,避免执行后续会触发报错的方法。
修复后可正常运行的代码:
function reverseWords(words) { // 优先做类型校验,拦截非法入参 if (typeof words !== "string") { return null; } // 校验通过后再执行字符串反转逻辑 return words.split("").reverse().join(""); } // 测试用例 console.log(reverseWords(89)); // 输出 null console.log(reverseWords("hello")); // 输出 "olleh"
内容的提问来源于stack exchange,提问作者dahboooyyyyyyy
相关产品推荐
相关产品推荐

