Cadenas

Cualquier conjunto de caracteres (letras, números, símbolos, etc.) entre un conjunto de comillas dobles ("), comillas simples (') o comillas simples (`) es una primitiva de cadena. Ya viste algunos ejemplos de cadenas de texto este curso: Las instancias de console.log del módulo anterior contenían primitivas de cadena.

console.log( "Hello, World." );
> Hello, World.

"Hello, World." es una primitiva de cadena. Obtienes el mismo resultado con una sola comillas o comillas simples:

console.log( 'Hello, World.' );
> Hello, World.

console.log(`Hello, World.`);
> Hello, World.

Una serie de caracteres encerrados entre comillas se denomina literal de cadena. Las comillas dobles y simples se comportan de la misma manera, y una puede contener la otra como un carácter en la cadena:

console.log( "I'm a string." );
> I'm a string.

console.log( '"A string," I said.' );
> "A string," I said.

Una instancia del mismo carácter circundante dentro de la string "closes" el string, lo que puede causar errores:

console.log( '"I'm a string," I said.' );
> Uncaught SyntaxError: missing ) after argument list

Para evitar esto, escapa el carácter con una barra inversa (/):

console.log( '"I\'m a string," I said.' );
> "I'm a string," I said.

Objeto de cadena

Cuando se llama como función, el objeto String fuerza un valor especificado a una literal de cadena.

let myString = String( 10 );

myString
> "10"

typeof myString
> string

Como se detalla en la herencia prototípica, Rara vez necesitarás usar el objeto String como constructor. Crea un un objeto de cadena que contiene el valor especificado, junto con los métodos y propiedades ya proporcionadas por el objeto String, en lugar de un literal de string.

let stringObj = new String( "My new string." );

typeof stringObj
> object

stringObj
> String { "My new string." }

Concatenación

Cuando se usa en el contexto de cadenas en lugar de números, un solo signo más (+) actúa como un operador de concatenación, que combina varios valores de cadena en una sola cadena:

console.log( "My" + " string." );
> My string.

Literales de string y literales de plantilla

Las comillas simples, las comillas dobles y las comillas simples se pueden usar indistintamente para crear primitivas de cadena. También puedes usar acentos graves para especificar literales de plantilla (a veces llamados “cadenas de plantilla”). A diferencia de literales de cadena creados con comillas simples o dobles, los literales de plantilla permiten para cadenas de varias líneas e interpolación de cadenas.

const myString = "This
is a string.";
> Uncaught SyntaxError: "" string literal contains an unescaped line break

const myString = `This
is a string.`;

console.log( myString );

> This
is a string.

Los literales de plantilla pueden contener expresiones de marcador de posición marcadas con un signo de dólar y llaves (${}). Estos marcadores de posición se "interpolan" de forma predeterminada, lo que significa que el resultado de la expresión reemplaza el marcador de posición en la cadena final.

console.log( "The result is " + ( 2 + 4 ) + "." );
> The result is 6.
console.log( `The result is ${ 2 + 4 }.` );
> The result is 6.

Un literal de plantilla se puede pasar a una función personalizada para crear una plantilla etiquetada, una llamada a función que usa una sola plantilla literal como un conjunto de argumentos y permite que sus marcadores de posición se propaguen según definida por el autor.

El primer argumento de una función de etiqueta contiene un array de valores de cadena. los argumentos restantes definen los marcadores de posición. Este array de valores de cadena es creado por “división” el literal de plantilla en cada marcador de posición que contenga. El el primer elemento del array contiene cualquier carácter hasta el primer marcador de posición, el segundo elemento contiene cualquier carácter entre el primero y el segundo marcadores de posición, etcétera. Cada marcador de posición se pasa a la función tag como un valor independiente con un marcador de posición asociado.

const myNoun = "template literal";

function myTagFunction( myStrings, myPlaceholder ) {
    const myInitialString = myStrings[ 0 ];
    console.log( `${ myInitialString }modified ${ myPlaceholder }.` );
}

myTagFunction`I'm a ${ myNoun }.`;
> "I'm a modified template literal."

Verifica tus conocimientos

¿Qué carácter se usa para escapar caracteres?

Una barra inversa ()
Comillas dobles (")
Una barra diagonal (/)

¿Qué carácter se utiliza para la concatenación?

+
&
.