dja*_*bs7 35 javascript string
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"
Run Code Online (Sandbox Code Playgroud)
除了替换之外,我还能使用另一种方法来改变字符串,而不给我一个新的字符串对象吗?
Cri*_*hez 67
不,JavaScript中的字符串是不可变的.
Jan*_*Vos 10
并不是我所知道的,但是如果您想要这样做的原因只是为了保持您的代码清洁,您只需将新字符串分配给旧变量:
var string = "This is a string";
string = string.replace("string", "thing");
Run Code Online (Sandbox Code Playgroud)
当然,这只会使代码看起来更清晰,仍然会创建一个新字符串.
字符串不可变是有原因的。由于Javascript使用按共享调用技术,因此在这种情况下可变字符串将是一个问题:
function thinger(str) {
return str.replace("string", "thing");
}
var str = "This is a str";
var thing = thinger(str);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您希望按值传递字符串,但不是。如果str是可变的,thinger会改变str,那将是一个非常奇怪的效果。