javascript console.log новая функция с "сырой"?

Я столкнулся с этим примером и был полностью потерян...

const test = (hey) => console.log(hey);

console.log(test `wtf`); 

Во-первых, все это действительно, в console.log, кажется,

["wtf", raw: Array[1]]

Это как функция была выполнена и с дополнительным raw? Может кто-нибудь объяснить, пожалуйста?

2 ответа

Решение

Это просто помеченный шаблонный литерал. Это выглядит необычно, но в этом нет ничего особенного. Обратите внимание, что они являются частью ES6/ES2015, поэтому вам потребуется их перенести, если вы планируете поддерживать старые браузеры.

Шаблонные литералы являются строковыми литералами, допускающими встроенные выражения. Вы можете использовать многострочные строки и функции интерполяции строк. Они назывались "шаблонными строками" в предыдущих выпусках спецификации ES2015 / ES6.

Кредит @karmuran и @deceze

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals

Сырые строки

Специальное необработанное свойство, доступное в первом аргументе функции теговых литералов шаблона, позволяет получить доступ к необработанным строкам по мере их ввода.

function tag(strings, ...values) {
  console.log(strings.raw[0]); 
  // "string text line 1 \n string text line 2"
}

tag`string text line 1 \n string text line 2`;
Другие вопросы по тегам