为何我自定义的JS字符串反转函数无法正常生效?
为什么带起止参数的JS字符串反转函数不生效?
问题出在JavaScript字符串的不可变性上:JS里的字符串属于不可变值类型,你代码里直接通过下标str[startRev] = str[endRev]的赋值操作根本不会改变原字符串——这种写法看起来合法,但实际上只是做了个无效操作,原字符串始终保持原样。
你的逻辑本身是对的,纸上推演没问题是因为默认了字符串可以直接修改,但JS里字符串和数字、布尔值一样,任何试图直接修改的行为都不会影响原字符串,只会生成新的字符串片段,而你并没有捕获这些片段。
修复后的函数
把字符串先转换成可修改的数组,操作完成后再转回字符串即可:
function strRev(str, startRev, endRev) { // 将字符串转为数组(数组是可变引用类型) const strArr = str.split(''); while (startRev < endRev) { const temp = strArr[startRev]; strArr[startRev] = strArr[endRev]; strArr[endRev] = temp; startRev += 1; endRev -= 1; } // 数组转回字符串返回 return strArr.join(''); }
正确调用方式
因为函数返回的是新字符串,需要用变量接收结果:
let str = "STACK"; const reversedStr = strRev(str, 0, str.length -1 ); console.log(reversedStr); // 输出 "KCATS"
内容的提问来源于stack exchange,提问作者FromThisLaptop
相关产品推荐
相关产品推荐

