JavaScript Academy · Lección

Funciones de plantilla etiquetada

Procese las partes de una plantilla con funciones de etiqueta.

Lección 3 de 413 pasos

Funciones de plantilla etiquetada es una lección gratuita de JavaScript Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de JavaScript Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de JavaScript Academy incluye 4 lecciones en total.

Qué es una función de etiqueta

Una plantilla etiquetada es una llamada a una función en la que el nombre de la función aparece directamente antes de un literal de plantilla. La función recibe las partes analizadas de la plantilla y puede transformarlas.

function tag(strings, value) {
  return strings[0] + value.toUpperCase() + strings[1]
}
console.log(tag(["Hi ", "!"], "bob"))

El array de cadenas

El primer argumento que recibe una función de etiqueta es un array con las partes de cadena literal. Son los fragmentos de texto situados entre los marcadores y alrededor de ellos.

function tag(strings) {
  return strings.join("|")
}
console.log(tag(["a", "b", "c"]))

Los valores

Después del array de cadenas, la función de etiqueta recibe cada valor interpolado como un argumento independiente. Los parámetros rest permiten recopilarlos en un array.

function tag(strings, ...values) {
  return values.join(",")
}
console.log(tag(["", " and ", ""], "x", "y"))

Volver a ensamblar la cadena

Una etiqueta típica recorre el array de cadenas e inserta cada valor entre las partes, reconstruyendo la cadena final con la transformación que desee.

function tag(strings, ...values) {
  let out = ""
  strings.forEach(function (s, i) {
    out += s + (values[i] !== undefined ? values[i] : "")
  })
  return out
}
console.log(tag(["A", "B", "C"], 1, 2))

Regla de longitud del array de cadenas

El array de cadenas siempre tiene exactamente un elemento más que el array de valores. Hay texto antes del primer marcador y después del último, aunque algunas partes estén vacías.

function tag(strings, ...values) {
  return "strings=" + strings.length + " values=" + values.length
}
console.log(tag(["", "", ""], 1, 2))

Transformar valores

Como la etiqueta controla cómo se insertan los valores, puede darles formato. Aquí, cada valor numérico se duplica antes de insertarse.

function dbl(strings, ...values) {
  let out = ""
  strings.forEach(function (s, i) {
    out += s + (values[i] !== undefined ? values[i] * 2 : "")
  })
  return out
}
console.log(dbl(["", " ", ""], 3, 4))

Devolver valores que no sean cadenas

Una función de etiqueta no tiene que devolver una cadena. Puede devolver cualquier valor, como un objeto o un array creado a partir de las partes de la plantilla.

function parts(strings, ...values) {
  return { strings: strings, values: values }
}
const r = parts(["a", "b"], 9)
console.log(r.values[0])

La propiedad raw

El array de cadenas también incluye una propiedad raw, que contiene las cadenas sin procesar las secuencias de escape. Así es como funciona String.raw.

console.log(String.raw({ raw: ["a\\n", "b"] }, "X"))

Convertir interpolaciones a mayúsculas

Una etiqueta de demostración común convierte a mayúsculas todos los valores interpolados, pero deja intacto el texto estático.

function loud(strings, ...values) {
  let out = ""
  strings.forEach(function (s, i) {
    out += s + (values[i] !== undefined ? String(values[i]).toUpperCase() : "")
  })
  return out
}
console.log(loud(["name is ", "."], "alice"))

Por qué usar etiquetas

Las funciones de etiqueta permiten aplicar patrones potentes: escapar entradas no confiables, internacionalizar, construir SQL o consultas y aplicar formatos personalizados, todo a partir de la estructura de la plantilla.

function highlight(strings, ...values) {
  let out = ""
  strings.forEach(function (s, i) {
    out += s + (values[i] !== undefined ? "[" + values[i] + "]" : "")
  })
  return out
}
console.log(highlight(["score: ", " pts"], 42))

Ignorar valores

Una etiqueta puede optar por ignorar por completo los valores interpolados y generar una salida basada únicamente en las partes estáticas, lo que resulta útil para análisis o registros.

function onlyStatic(strings) {
  return strings.filter(function (s) { return s.length > 0 }).join(" ")
}
console.log(onlyStatic(["Hello ", " world ", ""]))

Comprobación rápida

Compruebe sus conocimientos sobre las funciones de etiqueta.

Resumen

Resumen: Las plantillas con etiquetas llaman a una función con las partes analizadas de la plantilla.

  • El primer argumento es el arreglo strings
  • Los argumentos restantes son los valores interpolados
  • strings tiene un elemento más que values
  • La propiedad raw contiene el texto sin procesar
function tag(s, ...v) { return s[0] + v[0] }
console.log(tag(["go "], "fast"))
Gratis para empezar

Aprende JavaScript con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
59
Lecciones
200

Preguntas frecuentes

¿La lección «Funciones de plantilla etiquetada» es gratis?

Sí — el texto completo de «Funciones de plantilla etiquetada» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de JavaScript Academy, actualiza a CoddyKit PRO. El curso de JavaScript Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Funciones de plantilla etiquetada»?

Procese las partes de una plantilla con funciones de etiqueta. Practicas JavaScript Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar JavaScript Academy?

No se requiere experiencia previa. JavaScript Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Funciones de plantilla etiquetada»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de JavaScript Academy?

Sí. Cada lección de JavaScript Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Fundamentos de la interpolación de cadenas
  2. Cadenas multilínea
  3. Funciones de plantilla etiquetada
  4. Casos prácticos de plantillas etiquetadas
← Volver a JavaScript Academy