En caso que quieras usar Template Literals, el comando para sacar ( ` )
Método universal (Código ASCII): Presionar Alt + 96.
Windows: AltGr + la tecla } o ^
Mac: option + }
Aprende a dominar los strings en JavaScript con técnicas modernas y claras. Aquí verás por qué son primitivos inmutables, cómo evitar errores comunes al concatenar y cómo los template literals de ECMAScript 6 simplifican la interpolación, las expresiones y el texto multilínea. Todo con ejemplos prácticos y directos.
¿Qué son los strings y por qué son primitivos inmutables?
Los strings son primitivos inmutables: cada operación que aparenta “modificar” un string crea uno nuevo. El valor original no cambia. Esto es clave para razonar sobre memoria y evitar efectos inesperados.
También puedes usar comillas simples o dobles para definir strings. No hay una regla estricta, elige la que prefieras.
Ejemplo básico y salida en consola con varios parámetros.
// Variables y comillas simples. const nombre = 'JavaScript'; const version = '6'; // Imprimir varios valores en una sola línea. console.log(nombre, version); // JavaScript 6
Ideas clave:
¿Cómo concatenar y por qué usar template literals en ECMAScript 6?
La concatenación con + funciona, pero es propensa a errores y dificulta la lectura. Con template literals (las comillas invertidas) puedes interpolar variables con ${}, reducir fallos y escribir frases más limpias.
¿Qué problemas causa la concatenación con '+'?
// Concatenación tradicional con +. const mensaje = 'Bienvenido a ' + nombre + ', versión ' + version + '.'; console.log(mensaje);
¿Cómo simplifican los template literals la interpolación?
// Template literals con interpolación. const mensaje2 = `Bienvenido y bienvenida al curso de ${nombre} en su versión: ${version}.`; console.log(mensaje2); // Comentar líneas que no se ejecutan. // console.log('Línea desactivada');
¿Cómo evaluar expresiones, typeof y multilínea con template literals?
Los template literals permiten evaluar expresiones dentro de ${}. También facilitan crear texto multilínea para formatos como Markdown. Ojo con dos detalles frecuentes: errores por typo en nombres de variables y olvidar imprimir valores en consola.
// Expresiones dentro de template literals. const precio = 100; const cantidad = 3; const total = `${precio * cantidad}`; // El resultado queda como string. console.log(total); // 300 console.log(typeof total); // 'string'
Texto multilínea con formato tipo Markdown usando saltos de línea nativos.
// Multilínea con template literals. const nota = ` Mi nota Este es el contenido - nota uno - nota dos `; console.log(nota);
Habilidades y conceptos reforzados:
¿Te quedaron dudas o quieres compartir tus propios ejemplos con template literals y multilínea? Deja tu comentario y cuéntanos cómo lo aplicarías en tu proyecto.
Aprende a dominar los strings en JavaScript con técnicas modernas y claras. Aquí verás por qué son primitivos inmutables, cómo evitar errores comunes al concatenar y cómo los template literals de ECMAScript 6 simplifican la interpolación, las expresiones y el texto multilínea. Todo con ejemplos prácticos y directos.
Los strings son primitivos inmutables: cada operación que aparenta “modificar” un string crea uno nuevo. El valor original no cambia. Esto es clave para razonar sobre memoria y evitar efectos inesperados.
También puedes usar comillas simples o dobles para definir strings. No hay una regla estricta, elige la que prefieras.
Ejemplo básico y salida en consola con varios parámetros.
// Variables y comillas simples.
const nombre = 'JavaScript';
const version = '6';
// Imprimir varios valores en una sola línea.
console.log(nombre, version); // JavaScript 6
Ideas clave:
La concatenación con + funciona, pero es propensa a errores y dificulta la lectura. Con template literals (las comillas invertidas) puedes interpolar variables con ${}, reducir fallos y escribir frases más limpias.
// Concatenación tradicional con +.
const mensaje = 'Bienvenido a ' + nombre + ', versión ' + version + '.';
console.log(mensaje);
// Template literals con interpolación.
const mensaje2 = `Bienvenido y bienvenida al curso de ${nombre} en su versión: ${version}.`;
console.log(mensaje2);
// Comentar líneas que no se ejecutan.
// console.log('Línea desactivada');
Los template literals permiten evaluar expresiones dentro de ${}. También facilitan crear texto multilínea para formatos como Markdown. Ojo con dos detalles frecuentes: errores por typo en nombres de variables y olvidar imprimir valores en consola.
// Expresiones dentro de template literals.
const precio = 100;
const cantidad = 3;
const total = `${precio * cantidad}`; // El resultado queda como string.
console.log(total); // 300
console.log(typeof total); // 'string'
Texto multilínea con formato tipo Markdown usando saltos de línea nativos.
// Multilínea con template literals.
const nota = `
Mi nota
Este es el contenido
- nota uno
- nota dos
`;
console.log(nota);
Habilidades y conceptos reforzados:
¿Te quedaron dudas o quieres compartir tus propios ejemplos con template literals y multilínea? Deja tu comentario y cuéntanos cómo lo aplicarías en tu proyecto.
En caso que quieras usar Template Literals, el comando para sacar ( ` )
Método universal (Código ASCII): Presionar Alt + 96.
Windows: AltGr + la tecla } o ^
Mac: option + }
// ============================================
// Reto: Template literals en JavaScript
// ============================================
// Completa cada función usando template literals (comillas invertidas `)
// y la interpolación ${} cuando se indique.
// Ejecuta los tests con: npx vitest src/04-template-literals
// ============================================
// --- Reto 1: Mensaje de bienvenida con interpolación ---
// Recibe "nombre" (ej: "JavaScript") y "version" (ej: "6").
// Retorna el string: "Bienvenido a [nombre], versión [version]."
// Usa template literals con ${nombre} y ${version}.
function crearMensajeBienvenida(nombre, version) {
// Tu código aquí
return `Bienvenido a ${nombre}, versión ${version}.`;
}
// --- Reto 2: Concatenación tradicional (contraste con +) ---
// Recibe dos strings "parte1" y "parte2".
// Retorna un solo string uniendo parte1 + " " + parte2 (concatenación con +).
function concatenarConMas(parte1, parte2) {
// Tu código aquí
return parte1 + " " + parte2;
}
// --- Reto 3: Interpolar variables en una frase ---
// Recibe "nombre" (ej: "JavaScript") y "curso" (ej: "Fundamentos").
// Retorna: "Curso de [nombre]: [curso]." usando template literals.
function interpolarVariables(nombre, curso) {
// Tu código aquí
return `Curso de ${nombre}: ${curso}.`;
}
// --- Reto 4: Expresión dentro de template literal ---
// Recibe "precio" (número) y "cantidad" (número).
// Retorna un string con el resultado de precio * cantidad usando
// un template literal: `${precio * cantidad}` (el resultado queda como string).
function calcularTotalComoString(precio, cantidad) {
// Tu código aquí
return `${precio * cantidad}`;
}
// --- Reto 5: Tipo de dato del resultado de interpolación ---
// Sin parámetros. Retorna el tipo de dato de la expresión `${1 + 2}`.
// Pista: usa typeof. El resultado de interpolación siempre es string.
function tipoDeResultadoInterpolado() {
// Tu código aquí
return typeof `${1 + 2}`;
}
// --- Reto 6: Texto multilínea con template literals ---
// Recibe "titulo", "item1" e "item2" (strings).
// Retorna un string con varias líneas con este formato (incluye los saltos de línea):
// [titulo]
// - [item1]
// - [item2]
// Usa template literals con saltos de línea nativos (no uses \n).
function crearNotaMultilinea(titulo, item1, item2) {
// Tu código aquí
return (
`${titulo}
- ${item1}
- ${item2}`
);
}
module.exports = {
crearMensajeBienvenida,
concatenarConMas,
interpolarVariables,
calcularTotalComoString,
tipoDeResultadoInterpolado,
crearNotaMultilinea,
};
Solo quiero comentar que hace 3 años estuve en un reto de JS y la verdad no entendí nada de esto ( De verdad fue super frustrante y lo dejé por un buen tiempo) y ahora que he aprendido un poco más sobre pensamiento lógico puedo decir: SI SE PUEDE, AUNQUE LO VEAN DIFÍCIL VA LLEGAR UN PUNTO DONDE SEA PAN COMIDO. NO SE DEN POR VENCIDOS. 💪🏼
// Aquí mi aporte:
// --- Reto 1: Mensaje de bienvenida con interpolación ---
// Recibe "nombre" (ej: "JavaScript") y "version" (ej: "6").
// Retorna el string: "Bienvenido a [nombre], versión [version]."
// Usa template literals con ${nombre} y ${version}.
function crearMensajeBienvenida(nombre, version) {
return `Bienvenido a ${nombre}, versión ${version}.`;
}
console.log(crearMensajeBienvenida("JavaScript", "6")); // "Bienvenido a JavaScript, versión 6."
// --- Reto 2: Concatenación tradicional (contraste con +) ---
// Recibe dos strings "parte1" y "parte2".
// Retorna un solo string uniendo parte1 + " " + parte2 (concatenación con +).
function concatenarConMas(parte1, parte2) {
return parte1 + " " + parte2;
}
// --- Reto 3: Interpolar variables en una frase ---
// Recibe "nombre" (ej: "JavaScript") y "curso" (ej: "Fundamentos").
// Retorna: "Curso de [nombre]: [curso]." usando template literals.
function interpolarVariables(nombre, curso) {
return `Curso de ${nombre}: ${curso}.`;
}
console.log(interpolarVariables("JavaScript", "Fundamentos")); // "Curso de JavaScript: Fundamentos."
// --- Reto 4: Expresión dentro de template literal ---
// Recibe "precio" (número) y "cantidad" (número).
// Retorna un string con el resultado de precio * cantidad usando
// un template literal: `${precio * cantidad}` (el resultado queda como string).
function calcularTotalComoString(precio, cantidad) {
return `${precio * cantidad}`;
}
console.log(calcularTotalComoString(100, 3)); // "300"
console.log(typeof calcularTotalComoString(100, 3)); // "string"
// --- Reto 5: Tipo de dato del resultado de interpolación ---
// Sin parámetros. Retorna el tipo de dato de la expresión `${1 + 2}`.
// Pista: usa typeof. El resultado de interpolación siempre es string.
function tipoDeResultadoInterpolado() {
return typeof `${1 + 2}`;
}
// --- Reto 6: Texto multilínea con template literals ---
// Recibe "titulo", "item1" e "item2" (strings).
// Retorna un string con varias líneas con este formato (incluye los saltos de línea):
// [titulo]
// - [item1]
// - [item2]
// Usa template literals con saltos de línea nativos (no uses \n).
function crearNotaMultilinea(titulo, item1, item2) {
return `${titulo}
- ${item1}
- ${item2}`;
}
console.log(crearNotaMultilinea("Mi nota", "Nota 1", "Nota 2"));
module.exports = {
crearMensajeBienvenida,
concatenarConMas,
interpolarVariables,
calcularTotalComoString,
tipoDeResultadoInterpolado,
crearNotaMultilinea,
};

Done!
function crearMensajeBienvenida(nombre, version) {
return `Bienvenido a ${nombre}, versión ${version}.`;
}
// --- Reto 2: Concatenación tradicional (contraste con +) ---
// Recibe dos strings "parte1" y "parte2".
// Retorna un solo string uniendo parte1 + " " + parte2 (concatenación con +).
function concatenarConMas(parte1, parte2) {
return parte1 + " " + parte2;
}
// --- Reto 3: Interpolar variables en una frase ---
// Recibe "nombre" (ej: "JavaScript") y "curso" (ej: "Fundamentos").
// Retorna: "Curso de [nombre]: [curso]." usando template literals.
function interpolarVariables(nombre, curso) {
return `Curso de ${nombre}: ${curso}.`;
}
// --- Reto 4: Expresión dentro de template literal ---
// Recibe "precio" (número) y "cantidad" (número).
// Retorna un string con el resultado de precio * cantidad usando
// un template literal: `${precio * cantidad}` (el resultado queda como string).
function calcularTotalComoString(precio, cantidad) {
return `${precio * cantidad}`;
}
// --- Reto 5: Tipo de dato del resultado de interpolación ---
// Sin parámetros. Retorna el tipo de dato de la expresión `${1 + 2}`.
// Pista: usa typeof. El resultado de interpolación siempre es string.
function tipoDeResultadoInterpolado() {
const resultado = `${1 + 2}`;
return typeof resultado;
}
// --- Reto 6: Texto multilínea con template literals ---
// Recibe "titulo", "item1" e "item2" (strings).
// Retorna un string con varias líneas con este formato (incluye los saltos de línea):
// [titulo]
// - [item1]
// - [item2]
// Usa template literals con saltos de línea nativos (no uses \n).
function crearNotaMultilinea(titulo, item1, item2) {
return `${titulo}
- ${item1}
- ${item2}`;
}

Para inyectar variables directamente, debes envolver todo tu texto entre comillas invertidas y usar la sintaxis de interpolación con el símbolo de dólar y llaves. Por ejemplo, si tienes un sistema de bienvenida, en lugar de cortar el texto repetidamente, escribes algo como: const mensaje = Hola ${usuario}, tu plan ${plan} está activo.;. Dentro de las llaves puedes colocar cualquier expresión válida de JavaScript. Esto significa que no solo estás limitado a variables simples; podrías llamar a una función, acceder a la propiedad de un objeto o incluso usar un operador ternario para decidir qué palabra mostrar. Es como tener pequeños portales de lógica ejecutándose directamente dentro de tu cadena de texto, manteniendo todo el formato y los espacios exactamente como los escribiste en tu editor.
// ============================================
// Reto: Template literals en JavaScript
// ============================================
// Completa cada función usando template literals (comillas invertidas `)
// y la interpolación ${} cuando se indique.
// Ejecuta los tests con: npx vitest src/04-template-literals
// ============================================
// --- Reto 1: Mensaje de bienvenida con interpolación ---
// Recibe "nombre" (ej: "JavaScript") y "version" (ej: "6").
// Retorna el string: "Bienvenido a [nombre], versión [version]."
// Usa template literals con ${nombre} y ${version}.
function crearMensajeBienvenida(nombre, version) {
// Tu código aquí
const mensaje = `Bienvenido ${nombre} a la version: ${version}`
return{
mensaje
}
}
console.log(crearMensajeBienvenida('Cyn', 9));
// --- Reto 2: Concatenación tradicional (contraste con +) ---
// Recibe dos strings "parte1" y "parte2".
// Retorna un solo string uniendo parte1 + " " + parte2 (concatenación con +).
function concatenarConMas(parte1, parte2) {
// Tu código aquí
const mensaje = 'Nombre ' + parte1 + ' Apellido ' +parte2;
return{
mensaje
}
}
console.log(concatenarConMas('Cyn ', 'Rod'));
// --- Reto 3: Interpolar variables en una frase ---
// Recibe "nombre" (ej: "JavaScript") y "curso" (ej: "Fundamentos").
// Retorna: "Curso de [nombre]: [curso]." usando template literals.
function interpolarVariables(nombre, curso) {
// Tu código aquí
let mensaje = `Curso de ${nombre} : ${curso}`
return{
mensaje
}
}
console.log(interpolarVariables('JavaScript','Fundamentos'));
// --- Reto 4: Expresión dentro de template literal ---
// Recibe "precio" (número) y "cantidad" (número).
// Retorna un string con el resultado de precio * cantidad usando
// un template literal: `${precio * cantidad}` (el resultado queda como string).
function calcularTotalComoString(precio, cantidad) {
// Tu código aquí
const mensaje = `resultado ${precio * cantidad}`;
return{
mensaje
}
}
console.log(calcularTotalComoString(152,52));
// --- Reto 5: Tipo de dato del resultado de interpolación ---
// Sin parámetros. Retorna el tipo de dato de la expresión `${1 + 2}`.
// Pista: usa typeof. El resultado de interpolación siempre es string.
function tipoDeResultadoInterpolado() {
// Tu código aquí
const mensaje = `${1 + 2}`
return{
mensaje: typeof mensaje
}
}
console.log(tipoDeResultadoInterpolado());
// --- Reto 6: Texto multilínea con template literals ---
// Recibe "titulo", "item1" e "item2" (strings).
// Retorna un string con varias líneas con este formato (incluye los saltos de línea):
// [titulo]
// - [item1]
// - [item2]
// Usa template literals con saltos de línea nativos (no uses \n).
function crearNotaMultilinea(titulo, item1, item2) {
// Tu código aquí
return `${titulo}
- ${item1}
- ${item2}`;
}
console.log(crearNotaMultilinea('Pinocho', '2', '3'));
module.exports = {
crearMensajeBienvenida,
concatenarConMas,
interpolarVariables,
calcularTotalComoString,
tipoDeResultadoInterpolado,
crearNotaMultilinea,
};
Mi resultado:
// ============================================
// Reto: Template literals en JavaScript
// ============================================
// Completa cada función usando template literals (comillas invertidas `)
// y la interpolación ${} cuando se indique.
// Ejecuta los tests con: npx vitest src/04-template-literals
// ============================================
// --- Reto 1: Mensaje de bienvenida con interpolación ---
// Recibe "nombre" (ej: "JavaScript") y "version" (ej: "6").
// Retorna el string: "Bienvenido a [nombre], versión [version]."
// Usa template literals con ${nombre} y ${version}.
function crearMensajeBienvenida(nombre, version) {
return `Bienvenido a ${nombre}, versión ${version}.`;
}
// --- Reto 2: Concatenación tradicional (contraste con +) ---
// Recibe dos strings "parte1" y "parte2".
// Retorna un solo string uniendo parte1 + " " + parte2 (concatenación con +).
function concatenarConMas(parte1, parte2) {
return parte1 + " " + parte2;
}
// --- Reto 3: Interpolar variables en una frase ---
// Recibe "nombre" (ej: "JavaScript") y "curso" (ej: "Fundamentos").
// Retorna: "Curso de [nombre]: [curso]." usando template literals.
function interpolarVariables(nombre, curso) {
return `Curso de ${nombre}: ${curso}.`;
}
// --- Reto 4: Expresión dentro de template literal ---
// Recibe "precio" (número) y "cantidad" (número).
// Retorna un string con el resultado de precio * cantidad usando
// un template literal: `${precio * cantidad}` (el resultado queda como string).
function calcularTotalComoString(precio, cantidad) {
return `${precio * cantidad}`;
}
// --- Reto 5: Tipo de dato del resultado de interpolación ---
// Sin parámetros. Retorna el tipo de dato de la expresión `${1 + 2}`.
// Pista: usa typeof. El resultado de interpolación siempre es string.
function tipoDeResultadoInterpolado() {
return typeof `${1 + 2}`;
}
// --- Reto 6: Texto multilínea con template literals ---
// Recibe "titulo", "item1" e "item2" (strings).
// Retorna un string con varias líneas con este formato (incluye los saltos de línea):
// [titulo]
// - [item1]
// - [item2]
// Usa template literals con saltos de línea nativos (no uses \n).
function crearNotaMultilinea(titulo, item1, item2) {
return `${titulo}
- ${item1}
- ${item2}`;
}
export {
crearMensajeBienvenida,
concatenarConMas,
interpolarVariables,
calcularTotalComoString,
tipoDeResultadoInterpolado,
crearNotaMultilinea,
};
Mi solución al reto:
// ============================================
// Reto: Template literals en JavaScript
// ============================================
// Completa cada función usando template literals (comillas invertidas `)
// y la interpolación ${} cuando se indique.
// Ejecuta los tests con: npx vitest src/04-template-literals
// ============================================
// --- Reto 1: Mensaje de bienvenida con interpolación ---
// Recibe "nombre" (ej: "JavaScript") y "version" (ej: "6").
// Retorna el string: "Bienvenido a [nombre], versión [version]."
// Usa template literals con ${nombre} y ${version}.
function crearMensajeBienvenida(nombre, version) {
// Tu código aquí
return `Bienvenido a ${nombre}, versión ${version}.`;
}
console.log(crearMensajeBienvenida("JavaScript","ES6"));
// --- Reto 2: Concatenación tradicional (contraste con +) ---
// Recibe dos strings "parte1" y "parte2".
// Retorna un solo string uniendo parte1 + " " + parte2 (concatenación con +).
function concatenarConMas(parte1, parte2) {
// Tu código aquí
return `${parte1}` + " " + `${parte2}`;
}
console.log(concatenarConMas("Me llamo Juliana.", "Me gusta bailar."));
// --- Reto 3: Interpolar variables en una frase ---
// Recibe "nombre" (ej: "JavaScript") y "curso" (ej: "Fundamentos").
// Retorna: "Curso de [nombre]: [curso]." usando template literals.
function interpolarVariables(nombre, curso) {
// Tu código aquí
return `Curso de ${nombre}: ${curso}.`;
}
console.log(interpolarVariables("Fundamentos", "JavaScript"));
// --- Reto 4: Expresión dentro de template literal ---
// Recibe "precio" (número) y "cantidad" (número).
// Retorna un string con el resultado de precio * cantidad usando
// un template literal: `${precio * cantidad}` (el resultado queda como string).
function calcularTotalComoString(precio, cantidad) {
// Tu código aquí
return `${precio * cantidad}`
}
console.log(calcularTotalComoString(3,14));
console.log(typeof calcularTotalComoString(3,14));
// --- Reto 5: Tipo de dato del resultado de interpolación ---
// Sin parámetros. Retorna el tipo de dato de la expresión `${1 + 2}`.
// Pista: usa typeof. El resultado de interpolación siempre es string.
function tipoDeResultadoInterpolado() {
// Tu código aquí
let total = `${1 + 2}`;
return typeof total
}
console.log(tipoDeResultadoInterpolado());
// --- Reto 6: Texto multilínea con template literals ---
// Recibe "titulo", "item1" e "item2" (strings).
// Retorna un string con varias líneas con este formato (incluye los saltos de línea):
// [titulo]
// - [item1]
// - [item2]
// Usa template literals con saltos de línea nativos (no uses \n).
function crearNotaMultilinea(titulo, item1, item2) {
// Tu código aquí
return `# ${titulo}
- ${item1}
-${item2}`;
}
console.log(crearNotaMultilinea("Hola:", "Me llamo Juliana", "Tengo hambre"));
module.exports = {
crearMensajeBienvenida,
concatenarConMas,
interpolarVariables,
calcularTotalComoString,
tipoDeResultadoInterpolado,
crearNotaMultilinea,
};
SOY SAIDA GUILLERMINA CASTAÑEDA ULLOA. MUY ESPECIFICO Y PASO POR PASO. ME ENCANTA