Есть ли в javascript метод для замены части строки без создания новой строки? - PullRequest
29 голосов
/ 31 мая 2011
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" 

Есть ли другой метод, который я могу использовать, кроме замены, который изменит строку на месте, не давая мне новый строковый объект?

Ответы [ 3 ]

61 голосов
/ 31 мая 2011

Нет, строки в JavaScript неизменны.

9 голосов
/ 31 мая 2011

Не то, чтобы я знал, однако, если причина, по которой вы хотите это сделать, это просто сохранить ваш код в чистоте, вы можете просто присвоить новой строке старую переменную:

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

Конечно, этопросто сделает код немного чище и все равно создаст новую строку.

3 голосов
/ 02 июня 2015

Есть причина, по которой строки являются неизменяемыми.Поскольку Javascript использует технику call-by-share, в этом случае может возникнуть проблема с изменяемой строкой:

function thinger(str) {
    return str.replace("string", "thing");
}

var str = "This is a str";
var thing = thinger(str);

В этой ситуации вы хотите, чтобы ваша строка передавалась по значению, но это не так.Если бы str был изменяемым, thinger изменил бы str, это было бы действительно странным эффектом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...