ES6: ‘const’ y la inmutabilidad

7801e1ec06f7461c8766b6e81007fd16-750x500

La nueva versión de EcmaScript nos va a proporcionar una serie de mejoras al lenguaje que a día de hoy, para conseguirlas, nos requiere desarrollar más código y no centrarnos en el problema.

Con el tiempo, iremos acostumbrándonos a todas estas nuevas funcionalidades y será importante que empecemos a familiarizarnos con ellas.

Hoy particularmente venía a hablaros de la nueva palabra reservada ‘const’ y a enseñaros un caso especial, que nos va a costar entender si somos algo nuevos en JavaScript. Empecemos:

¿Que nos aporta ‘const’?

‘const’ es una de las nuevas palabras reservadas que nos va a proporcionar el estándar. ‘const’ nos va ayudar a declarar variables inmutables, esto es, a declarar variables cuyo valor no pueda ser cambiado a lo largo del ciclo de vida de una variable. Una vez que la creemos, no podremos cambiar su valor.

Es una palabra reservada que encontramos en la mayoría de lenguajes y que como su nomenclatura indica, nos va a permitir almacenar constantes de la aplicación cuyo valor sabemos que no tienen que cambiar.

Su uso podemos verlo en el siguiente ejemplo:

Como podemos ver, si intentamos asignar un nuevo valor a la constante, se nos lanzará una excepción con el error provocado.

‘const’ y los objetos

Tenemos que tener cuidado cuando deseemos almacenar un objeto JSON en una constante de JavaScript. La lógica de cualquier programador nos diría que si almacenamos valores primitivo en un ‘const’ estos son inmutables por lo que el comportamiento esperado con los objetos debería ser el mismo, es decir, que las propiedades del objeto serán inmutables. Como vemos en el siguiente ejemplo, esto no es así y no se produce error al asignar nuevos valores a la propiedades:

Tiene sentido que esto no sea así y los programadores JavaScript más veteranos lo encontrarán bastante lógico.

Recordemos que en JavaScript, cuando asignamos un objeto a una variable, no estamos almacenando el objeto en si en esa variable, si no que se está almacenando una referencia del objeto. Se almacena el puntero con la posición donde se encuentra el objeto real.

Por tanto, si seguimos esta lógica, lo que ‘const’ está convirtiendo en inmutable no es el objeto en si, si no la referencia a ese objeto. En este siguiente caso, la asignación si da un error por intentar asignar  una nueva referencia en la constante:

Conclusión

Aunque ES6 nos va a suponer una gran mejora para JavaScript, todavía vamos a tener que lidiar con muchos  de los problemas que  hemos sufrido a lo largo de estos años por culpa del diseño del lenguaje.

Seguir estudiando JavaScript y conociendo todas sus particularidades es muy importante para evitar fallos o el gasto innecesario de tiempo por resolver aquello que no entendemos.

Sigue siendo muy recomendable echar un vistazo al libro de Douglas Crockford sobre ‘Las buenas partes de JavaScript’.

Si por un casual, estáis intentando desarrollar aplicaciones JavaScript por medio del paradigma funcional y deseáis que todos vuestro flujo de datos sea inmutable, Facebook sacó esta librería que os podrá ayudar mucho más que la nueva palabra reservada ‘const’.

Nos leemos 🙂

Imagen | Jordi Fernandes

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s