2011-05-31 730 views
19
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" 

¿Existe otro método que pueda usar, además de reemplazar, que alterará la cadena en su lugar sin darme un nuevo objeto de cadena?¿Tiene javascript un método para reemplazar parte de una cadena sin crear una nueva cadena?

+0

Sugiero que nunca utilice palabras reservadas (como 'cadena') al definir nombres de variables en cualquier idioma. –

+1

'cadena' no es una palabra reservada en JavaScript ([fuente] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Reserved_Words)). Sin embargo, 'str' es' undefined'. ¡Has estropeado los nombres de las variables! – Iso

Respuesta

45

No, las cadenas en JavaScript son inmutables.

+3

Sin embargo, podría hacer algo como esto si no desea crear una nueva variable: 'string = string.replace (" string "," thing ");' –

8

No es que yo sepa, sin embargo, si la razón por la que quieres hacer esto es sólo para mantener su código limpio que sólo puede asignar la nueva cadena del viejo variables:

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

Por supuesto, esto simplemente haga que el código se vea un poco más limpio y aún así cree un nuevo objeto de cadena.

2

Hay una razón por la cual las cadenas son inmutables. Como utilizar Javascript llamada por compartir técnica, cadena mutable sería un problema en este caso:

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

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

En esta situación usted quiere que su cadena que se pasa por valor, pero no lo es. Si str fuera mutable, thinger cambiaría str, eso sería un efecto realmente extraño.

Cuestiones relacionadas