มันถูกเรียกว่า Tagged แม่แบบใน ES-6 เพิ่มเติมสามารถอ่านเกี่ยวกับพวกเขาที่นี่ , ตลกผมพบว่าการเชื่อมโยงในส่วนที่ติดดาวของการแชทมาก
แต่ส่วนที่เกี่ยวข้องของโค้ดอยู่ด้านล่าง (โดยทั่วไปคุณสามารถสร้างการจัดเรียงที่กรองได้)
function tag(strings, ...values) {
assert(strings[0] === 'a');
assert(strings[1] === 'b');
assert(values[0] === 42);
return 'whatever';
}
tag `a${ 42 }b`
โดยพื้นฐานแล้วมันเป็นเพียงการแท็ก "1" ด้วยฟังก์ชัน console.log เช่นเดียวกับฟังก์ชันอื่น ฟังก์ชันการติดแท็กยอมรับค่าที่แยกวิเคราะห์ของสตริงเทมเพลตและค่าแยกกันซึ่งสามารถดำเนินการต่อไปได้
Babel ถ่ายทอดรหัสด้านบนไปที่
var _taggedTemplateLiteralLoose = function (strings, raw) { strings.raw = raw; return strings; };
console.log(_taggedTemplateLiteralLoose(["1"], ["1"]));
ดังที่คุณเห็นในตัวอย่างด้านบนหลังจากที่ babel ถูกถ่ายทอดแล้วฟังก์ชันการแท็ก (console.log) จะถูกส่งผ่านค่าส่งคืนของโค้ด es6-> 5 ที่แสดงต่อไปนี้
_taggedTemplateLiteralLoose( ["1"], ["1"] );
ค่าส่งกลับของฟังก์ชันนี้จะถูกส่งไปยัง console.log ซึ่งจะพิมพ์อาร์เรย์