Ini disebut Template Tagged di ES-6 lebih banyak yang bisa dibaca tentang mereka Di sini , lucu saya menemukan tautan di bagian berbintang di obrolan.
Tetapi bagian yang relevan dari kode ada di bawah (pada dasarnya Anda dapat membuat semacam yang difilter).
function tag(strings, ...values) {
assert(strings[0] === 'a');
assert(strings[1] === 'b');
assert(values[0] === 42);
return 'whatever';
}
tag `a${ 42 }b`
Pada dasarnya, ini hanya menandai "1" dengan fungsi console.log, seperti yang akan dilakukan dengan fungsi lainnya. Fungsi penandaan menerima nilai parsing dari string template dan nilai secara terpisah di mana tugas selanjutnya dapat dilakukan.
Babel memindahkan kode di atas ke
var _taggedTemplateLiteralLoose = function (strings, raw) { strings.raw = raw; return strings; };
console.log(_taggedTemplateLiteralLoose(["1"], ["1"]));
Seperti yang Anda lihat pada contoh di atas, setelah ditranspilasi oleh babel, fungsi penandaan (console.log) sedang diberikan nilai kembalian dari kode transpiled es6-> 5 berikut.
_taggedTemplateLiteralLoose( ["1"], ["1"] );
Nilai yang dikembalikan dari fungsi ini diteruskan ke console.log yang kemudian akan mencetak array.