JavaScript Cuerdas etiquetadas


Ejemplo

Una función identificada inmediatamente antes de un literal de plantilla se utiliza para interpretarla, en lo que se denomina un literal de plantilla etiquetada . La función de etiqueta puede devolver una cadena, pero también puede devolver cualquier otro tipo de valor.

El primer argumento de la función de etiqueta, strings , es una matriz de cada pieza constante del literal. Los argumentos restantes, ...substitutions , contienen los valores evaluados de cada expresión de sustitución ${} .

function settings(strings, ...substitutions) {
  const result = new Map();
  for (let i = 0; i < substitutions.length; i++) {
    result.set(strings[i].trim(), substitutions[i]);
  }
  return result;
}

const remoteConfiguration = settings`
  label    ${'Content'}
  servers  ${2 * 8 + 1}
  hostname ${location.hostname}
`;
Map {"label" => "Content", "servers" => 17, "hostname" => "stackoverflow.com"}

La strings tiene una propiedad especial .raw referencia a una matriz paralela de las mismas partes constantes del literal de la plantilla, pero exactamente como aparecen en el código fuente, sin que se reemplace ninguna barra de escape.

function example(strings, ...substitutions) {
  console.log('strings:', strings);
  console.log('...substitutions:', substitutions);
}

example`Hello ${'world'}.\n\nHow are you?`;
strings: ["Hello ", ".\n\nHow are you?", raw: ["Hello ", ".\\n\\nHow are you?"]]
substitutions: ["world"]