为什么JavaScript反转字符串时console.log返回undefined?
排查你的reverseString函数返回undefined的问题
让我帮你拆解这段代码里的几个关键错误,正是它们导致函数返回了undefined:
1. 条件判断逻辑完全写反了
你写的if (!strr.length)意思是只有当传入的字符串长度为0时,才会执行里面的循环逻辑。但你传入的a是有内容的字符串(长度大于0),所以循环代码根本没被执行,result变量也没被初始化——这时候函数最后返回的result就是一个未定义的变量,自然输出undefined。
2. 循环的起始索引错误
就算条件判断改对了,你的循环起始值var i=strr.length也有问题:字符串的索引是从0到strr.length-1的,直接用strr.length作为起始值,charAt(i)会取到undefined(超出了字符串的有效索引范围)。
3. 方法名拼写错误
还有个小细节:chatAt应该是charAt,少了一个r,这个拼写错误会导致调用不存在的方法,同样会得到undefined。
修正后的代码
var a = "gsdgtrshghf"; function reverseString(strr){ var result = ""; // 先初始化result,避免未定义 for(var i = strr.length - 1; i >= 0; i--){ // 从最后一个有效索引开始循环到0 var char = strr.charAt(i); // 修正方法名拼写 result += char; } return result; } console.log(reverseString(a)) // 输出:fhghsrtgdsg
这样修改后,函数就能正确反转字符串啦。
内容的提问来源于stack exchange,提问作者Xinyi Li
相关产品推荐
相关产品推荐

