javascript是否可以在不创建新字符串的情况下替换部分字符串?

问题描述

|
var str = \"This is a string\";
var thing = str.replace(\"string\",\"thing\");

console.log( str )
>> \"This is a string\" 

console.log( thing )
>> \"This is a thing\" 
除了替换,我还有其他方法可以使用,而无需给我新的字符串对象的情况下更改字符串吗?     

解决方法

        不,JavaScript中的字符串是不可变的。     ,        并不是我所知道的,但是,如果您要这样做的原因只是为了保持代码的干净,就可以为新字符串分配旧变量:
var string = \"This is a string\";
string = string.replace(\"string\",\"thing\");
当然,这只会使代码看起来更简洁,并且仍会创建一个新字符串。     ,        字符串不可变是有原因的。由于Javascript使用按共享调用技术,因此在这种情况下可变字符串将是一个问题:
function thinger(str) {
    return str.replace(\"string\",\"thing\");
}

var str = \"This is a str\";
var thing = thinger(str);
在这种情况下,您希望按值传递字符串,但不是。如果str是可变的,thinger会改变str,那将是一个非常奇怪的效果。