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

如何通过引用传递字符串参数?函数中修改字符串内容的高效简洁方法

解决JavaScript中字符串无法通过引用修改的问题

刚好碰到过类似的场景!确实,JavaScript里原始类型(包括字符串)都是按值传递的,函数内部拿到的只是原始值的副本,所以直接修改不会影响外面的变量。下面给你几个高效又简洁的处理方案,按推荐程度排序:

1. 最简洁直观:函数返回修改后的字符串,重新赋值

这是JavaScript里最常规也最简洁的做法,没有额外的包装,代码可读性拉满:

function updateString(str) {
  return str.trim() + " - 已修改"; // 举个修改的例子,比如去掉空格再加后缀
}

let s = "  原始字符串  ";
s = updateString(s);
console.log(s); // 输出:"原始字符串 - 已修改"

这种方式符合函数式编程的无副作用原则,逻辑清晰,别人看代码一眼就能懂,绝对是首选。

2. 用对象包装实现引用传递

如果你的场景确实需要通过引用传递(比如要在多个函数里修改同一个值),可以把字符串放进一个对象的属性里。因为对象是引用类型,函数里修改对象属性会直接影响原始对象:

function modifyStrObj(obj) {
  obj.content = obj.content.toUpperCase(); // 修改为大写
}

let strWrapper = { content: "hello world" };
modifyStrObj(strWrapper);
console.log(strWrapper.content); // 输出:"HELLO WORLD"

这种方式只需要一层简单的对象包装,语义也很明确,比用数组包装更易读。

3. 用单元素数组临时包装(可选)

和对象原理一样,数组也是引用类型,你可以用一个只有一个元素的数组来存字符串:

function modifyStrArr(arr) {
  arr[0] = arr[0].replace("old", "new"); // 替换内容
}

let strArr = ["这是old内容"];
modifyStrArr(strArr);
console.log(strArr[0]); // 输出:"这是new内容"

不过这种方式的语义不如对象清晰,除非你本来就在处理数组相关的逻辑,否则更推荐用对象包装的方式。

总结

如果追求极致简洁和可读性,首选第一种返回值重新赋值的方式;如果必须用引用传递的模式,对象包装是最语义化的选择。

内容的提问来源于stack exchange,提问作者tru7

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:20:01