You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何我自定义的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 14:20:19