Nó được gọi là Tagged Template trong ES-6 có thể đọc thêm về chúng Ở đây , thật buồn cười khi tôi tìm thấy liên kết trong phần có dấu sao của cuộc trò chuyện.
Nhưng phần có liên quan của mã ở bên dưới (về cơ bản bạn có thể tạo một loại được lọc).
function tag(strings, ...values) {
assert(strings[0] === 'a');
assert(strings[1] === 'b');
assert(values[0] === 42);
return 'whatever';
}
tag `a${ 42 }b`
Về cơ bản, nó chỉ gắn thẻ "1" với hàm console.log, như nó sẽ làm với bất kỳ hàm nào khác. Các hàm gắn thẻ chấp nhận các giá trị được phân tích cú pháp của các chuỗi mẫu và các giá trị riêng biệt mà các tác vụ khác có thể được thực hiện.
Babel chuyển đoạn mã trên thành
var _taggedTemplateLiteralLoose = function (strings, raw) { strings.raw = raw; return strings; };
console.log(_taggedTemplateLiteralLoose(["1"], ["1"]));
Như bạn có thể thấy trong ví dụ trên, sau khi được chuyển đổi bởi babel, hàm gắn thẻ (console.log) đang được chuyển giá trị trả về của mã chuyển tiếp es6-> 5 sau đây.
_taggedTemplateLiteralLoose( ["1"], ["1"] );
Giá trị trả về của hàm này được chuyển tới console.log, sau đó sẽ in mảng.