Interpolacja łańcuchów znaków

JavaScript:
Interpolacja łańcuchów znaków

How to:

W JavaScript można interpolować stringi przy użyciu template literals, oto jak:

const name = 'Jan';
const message = `Cześć, ${name}! Jak się masz?`;
console.log(message); // "Cześć, Jan! Jak się masz?"

Potrzebujesz wyrażenia w środku? Żaden problem:

const x = 5;
const y = 10;
console.log(`Suma ${x} i ${y} to ${x + y}.`); // "Suma 5 i 10 to 15."

Interpolacja działa też z funkcjami:

function formatCurrency(amount) {
  return `${amount.toFixed(2)} zł`;
}

const price = 29.99;
const message = `Do zapłaty: ${formatCurrency(price)}`;
console.log(message); // "Do zapłaty: 29.99 zł"

Deep Dive

Interpolacja stringów istnieje w JavaScript od wprowadzenia ES6 w 2015 roku. Wcześniej używaliśmy konkatenacji, czyli łączenia stringów przy użyciu +:

var name = 'Jan';
var message = 'Cześć, ' + name + '! Jak się masz?';

Jednakże, template literals (oznaczone przez backticks `) uczyniły ten proces bardziej eleganckim i czytelnym.

Ciekawostką jest, że niektóre języki mają interpolację stringów już od dłuższego czasu, przykładowo w Ruby czy Perl.

Alternatywą interpolacji w JavaScript może być również stosowanie funkcji replace lub bibliotek zewnętrznych jak lodash, które oferują funkcję _.template.

const data = { name: "Jan" };
const compiled = _.template("Cześć, <%= name %>!");
console.log(compiled(data)); // "Cześć, Jan!"

Pod względem wydajności, interpolacja stringów może mieć lekką przewagę nad konkatenacją, ponieważ JavaScript silniki zoptymalizowane są pod kątem pracy z template literals.

See Also