¡Esta es una revisión vieja del documento!
Tabla de Contenidos
Desestructuración
Módulo perteneciente al curso Programación avanzada con JavaScript y ECMAScript.
Interpolación de cadenas
La interpolación de cadenas es una pequeña novedad de ECMAScript 2015, que a pesar de ser syntactic sugar puro, seguro que se convertirá en una de tus novedades favoritas.
Actualmente en JavaScript podemos crear cadenas de dos formas, ya sea con comillas dobles (") o con las comillas simples ('). Por si alguna vez te lo has preguntado, no hay diferencia alguna entre usar comillas dobles o simples. La razón por la que existan esas dos opciones de caracteres para delimitar las cadenas es porque de ese modo evitamos tener que “escaparlos” si queremos utilizarlos dentro de una cadena:
var str = "Sayonara 'baby'"; var str2 = 'Sayonara \'baby\''; var str3 = 'Hello "amigo"'; var str4 = "Hello \"amigo\"";
Como se puede observar las versiones que no requieren escapar ningún carácter, son más legibles. Esa es la razón principal por la cual existen dos delimitadores distintos para una cadena: elige el que prefieras y usa el otro dentro.
Si alguna vez construyes JSON de forma manual (aunque no deberías hacerlo nunca, sino que deberías usar JSON.stringify en su lugar) recuerda que las cadenas en JSON siempre son con comillas dobles.
Interpolando cadenas
Bajo el nombre de “interpolación” de cadenas no se esconde nada más que un mecanismo que te permite pasar una cadena que contiene un conjunto de comodines o placeholders junto con unos datos. El resultado es la misma cadena pero sustituyendo cada uno de los comodines por el dato concreto.
Veamos cómo podríamos hacer eso en ECMAScript 5:
String.prototype.format = function() { var args = arguments; return this.replace(/{(\d+)}/g, function(match, number) { return typeof args[number] != 'undefined' ? args[number] : match ; }); };
Este código añade al String.prototype (prototipo de todas las cadenas) la función format. Esta función usa una expresión regular para sustituir los placeholders en forma {0}, {1} y así sucesivamente, con el argumento correspondiente al orden indicado:
var str = "{0}{1} mola mucho, pero {0} {2} todavía mola más".format("ECMASCript","5","2015");
El valor de str es: "ECMASCript5 mola mucho, pero ECMASCript 2015 todavía mola más".
Tener un método para interpolar cadenas nos evita tener que usar concatenaciones que al final terminan ensuciando mucho el código.
Pues bien en ECMAScript 2015 las tenemos de serie, en el lenguaje. Sin necesidad de invocar a función alguna y ¡encima con más potencia! Observa el siguiente código:
var a0 = "ECMASCript"; var a1 = 5; var a2 = 2015; var str=`${a0} ${a1} mola mucho, pero ${a0} ${a2} todavía mola más`;
Este código deja en str el mismo valor que antes.
Fijémonos en los detalles:
- Se usa un nuevo delimitador de cadenas: la tilde abierta (
`). La interpolación de cadenas solo funciona con ese delimitador. - Se usa
${expr}para indicar un comodín. La potencia viene dada porque realmente epxr no tiene que ser simplemente una variable (como en nuestro ejemplo) sino que es una expresión. Esa expresión se evaluará y su resultado se colocará en lugar del placeholder.
Veamos otro código que deje claro la evaluación de expresiones dentro de los placeholders:
var a = 10; var b = 32; var str = `El resultado de sumar ${a} y ${b} es ${a+b}`;
En resumen, la interpolación de cadenas nos permite crear fácilmente cadenas compuestas por varios elementos de forma sencilla y mucho más legible que usando concatenaciones. Ya verás que cuando empieces a usarla… ¡te costará volver a concatenar cadenas!
