Подтвердить что ты не робот

Есть ли у 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" 

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

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

Ответ 3

Есть причина, почему строки неизменяемы. Поскольку Javascript использует технику "разворачивание по принципу обмена сообщениями", изменяемая строка будет проблемой в этом случае:

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

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

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