Есть причина, по которой строки являются неизменяемыми.Поскольку 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, это было бы действительно странным эффектом.