var string = "This is a string";
var thing = str.replace("string","thing");
console.log(string)
>> "This is a string"
console.log(thing)
>> "This is a thing"
除了替换之外,是否还有另一种方法可以改变字符串而不给我一个新的字符串对象?javascript是否有方法来替换部分字符串而不创建新字符串?
var string = "This is a string";
var thing = str.replace("string","thing");
console.log(string)
>> "This is a string"
console.log(thing)
>> "This is a thing"
除了替换之外,是否还有另一种方法可以改变字符串而不给我一个新的字符串对象?javascript是否有方法来替换部分字符串而不创建新字符串?
不,JavaScript中的字符串是不可变的。
如果你不想创建一个新的变量,你可以这样做:'string = string.replace(“string”,“thing”);'' – 2011-05-31 19:02:17
不,我知道的,但是如果你想这样做的原因只是为了让你的代码干净,你可以只分配新的字符串的老变量:
var string = "This is a string";
string = string.replace("string", "thing");
当然会只是让代码看起来更清晰一些,并且仍然创建一个新的字符串对象。
字符串不可变是有原因的。如JavaScript使用来电通过共享TECHNIC,可变的字符串是在这种情况下一个问题:
function thinger(str) {
return str.replace("string", "thing");
}
var str = "This is a str";
var thing = thinger(str);
在你希望你的字符串按值传递这种情况,但事实并非如此。如果str是可变的,thinger会改变str,那将是一个非常奇怪的效果。
我建议你在定义任何语言的变量名时不要使用保留字(如'string')。 – 2014-03-19 19:14:02
'string'不是JavaScript中的保留字([source](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Reserved_Words))。然而,'str'是'undefined'。你搞砸了变量名! – Iso 2014-03-19 19:18:34