2012-05-18 20 views
5

Duplicar posible:
javascript numbers- immutable¿El número en JavaScript es inmutable?

leí el libro de Douglas Crockford JavaScript: las partes buenas. Dice que el número en JavaScript es inmutable. Pero los números en JavaScript se copian por valor y podemos usar el operador ++ para cambiar el valor. Entonces, ¿por qué decir que es inmutable? y además, si es inmutable, ¿por qué los números se copian por valor?

+0

su respuesta está aquí http://stackoverflow.com/questions/8248568/javascript-numbers-immutable – Gatekeeper

+1

@Gatekeeper Creo que son diferentes –

Respuesta

4

Son inmutables porque se copian por su valor.

Al hacer

var x = 4; 
x += 1; 

no ha cambiado el número 4 en el número 5. Ha cambiado el valor almacenado en la variable x de 4 a 5.

+0

Si cambié el valor almacenado en la variable x, ¿por qué decir que es inmutable. Y creo que "inmutable" significa que no puede cambiar la memoria a la que apunta la variable. –

+0

Y creo que + = también es una asignación que vincula la variable a otra memoria si x es inmutable –

0

Cuando modifica los miembros de un objeto, modifica su contenido. El valor de la variable (es decir, la referencia) permanece igual. Esto es mutable,

Cuando declaras una cadena, tiene un valor, pero cuando cambias ese valor, se crea una nueva cadena. Esto significa que es inmutable.

De forma similar con números. No puedes cambiar un 3 para que sea un 4. A 3 es siempre 3, nunca más. Entonces, cuando asigna una variable a otro número, está creando un nuevo número en la memoria, no asignando el contenido de alguna memoria apuntada por una variable a un valor diferente.

+0

¿qué pasa con el operador ++, también crea un nuevo número en la memoria? –

+0

x ++ es idéntico a x + = 1, entonces sí. –

+0

Creo que es bastante confuso. En python, el entero también es inmutable y python no proporciona el operador ++. Y creo que la razón detrás de esto es que ++ hace que la gente piense que el valor cambia en el lugar. Y no entiendo por qué JavaScript se comporta de una manera tan inusual –