В JavaScript обратный тик †, кажется, работает так же, как одиночная кавычка. Например, я могу использовать обратную косую черту, чтобы определить такую строку:
var s = `abc`;
Есть ли способ, которым поведение backtick на самом деле отличается от поведения одиночной кавычки?
† Обратите внимание, что среди программистов «backtick» - это одно из названий того, что обычно называют серьезным акцентом . Программисты также иногда используют альтернативные имена "backquote" и "backgrave". Кроме того, в переполнении стека и в других местах другие распространенные варианты написания слов "backtick" - это "back-tick" и "back tick".
Ответы:
Эта функция называется шаблонными литералами .
Они назывались «шаблонными строками» в предыдущих выпусках спецификации ECMAScript 2015.
Шаблонные литералы поддерживаются в Firefox 34, Chrome 41 и Edge 12 и выше, но не в Internet Explorer.
Шаблонные литералы могут использоваться для представления многострочных строк и могут использовать «интерполяцию» для вставки переменных:
Вывод:
Что более важно, они могут содержать не только имя переменной, но и любое выражение JavaScript:
источник
["a", "b"].join(""); // both string elements written in new lines
. Но помимо этого можно использовать «транспортер», такой как Babel, для преобразования ES6 + в ES5alert`1`
.ECMAScript 6 предлагает новый тип строкового литерала, использующий обратную черту в качестве разделителя. Эти литералы позволяют встроить базовые выражения интерполяции строк, которые затем автоматически анализируются и оцениваются.
Как вы можете видеть, мы использовали
`
вокруг серии символов, которые интерпретируются как строковые литералы, но любые выражения формы${..}
анализируются и оцениваются внутри строки немедленно.Одним из действительно приятных преимуществ интерполированных строковых литералов является то, что им разрешено разбивать несколько строк:
Интерполированные выражения
Любое допустимое выражение может появляться внутри
${..}
интерполированного строкового литерала, включая вызовы функций, вызовы встроенных выражений функций и даже другие интерполированные строковые литералы!Здесь, внутренний
`${who}s`
интерполированный строковый литерал был немного более удобным для нас при объединенииwho
переменной со"s"
строкой, в отличие отwho + "s"
. Также, чтобы сохранить примечание, интерполированный строковый литерал просто лексически ограничен, где он появляется, а не динамически ограничен каким-либо образом:Использование литерала шаблона для HTML определенно более читабельно за счет уменьшения раздражения.
Простой старый способ:
С ECMAScript 6:
Помеченные литералами шаблонов
Мы также можем пометить строку шаблона, если строка шаблона помечена, литералы и подстановки передаются в функцию, которая возвращает полученное значение.
Здесь мы можем использовать оператор распространения для передачи нескольких значений. Первый аргумент - мы назвали его строками - это массив всех простых строк (вещи между любыми интерполированными выражениями).
Затем мы собираем все последующие аргументы в массив, называемый значениями, используя
... gather/rest operator
, хотя вы, конечно, можете оставить их как отдельные именованные параметры после параметра строк, как мы делали выше (value1
,value2
и т. Д.).Аргумент (ы), собранные в нашем массиве значений, являются результатами уже вычисленных выражений интерполяции, найденных в строковом литерале. Строковый литерал с тегами подобен шагу обработки после оценки интерполяций, но до компиляции окончательного значения строки, что дает вам больший контроль над генерацией строки из литерала. Давайте посмотрим на пример создания повторно используемых шаблонов.
Сырые строки
Наши функции тегов получают первый аргумент, который мы назвали strings, который является массивом. Но есть дополнительный бит данных: необработанные необработанные версии всех строк. Вы можете получить доступ к этим необработанным строковым значениям, используя это
.raw
свойство, например:Как видите, необработанная версия строки сохраняет экранированную
\n
последовательность, в то время как обработанная версия строки обрабатывает ее как настоящую новую строку без выхода. ECMAScript 6 поставляется с встроенной функцией , которая может быть использована в качестве строкового литерала тега:String.raw(..)
. Он просто проходит через необработанные версии строк:источник
myTaggedLiteral`test ${someText} ${2 + 3}`;
должны быть//["test ", " "]
(то есть не обрезанные строки).Backticks (
`
) используются для определения литералов шаблона. Шаблонные литералы - это новая функция в ECMAScript 6, упрощающая работу со строками.Особенности:
Примечание: мы можем легко использовать одинарные кавычки (
'
) и двойные кавычки ("
) внутри обратных галочек (`
).Пример:
Чтобы интерполировать переменные или выражения, мы можем использовать
${expression}
обозначение для этого.Многострочные строки означают, что вам больше не нужно использовать
\n
новые строки.Пример:
Вывод:
источник
Обратные метки заключают литералы шаблона, ранее известные как строки шаблона. Шаблонные литералы - это строковые литералы, которые допускают встроенные выражения и функции интерполяции строк.
Шаблон литералы имеют выражение , встроенное в заполнителях, обозначенное знаком доллара и фигурные скобками выражения, то есть
${expression}
. Заполнитель / выражения передаются в функцию. Функция по умолчанию просто объединяет строку.Чтобы избежать обратного удара, поставьте перед ним обратную косую черту:
Используйте обратные пометки, чтобы более легко написать многострочную строку:
или
против ванильного JavaScript:
или
Escape-последовательности:
\u
Например, экранирование Unicode, начатое\u00A9
\u{}
, например,\u{2F804}
\x
, например,\xA9
\
и (а) цифр (ов), например\251
источник
Резюме:
Обратные ссылки в JavaScript - это функция, которая представлена в ECMAScript 6 // ECMAScript 2015 для создания простых динамических строк. Эта особенность ECMAScript 6 также называется литералом строки шаблона . Он предлагает следующие преимущества по сравнению с обычными строками:
''
или""
) не могут иметь разрывов строк.${myVariable}
синтаксиса.Пример:
Совместимость браузера:
Строковый литерал шаблона изначально поддерживается всеми основными поставщиками браузеров (кроме Internet Explorer). Так что это довольно безопасно для использования в вашем рабочем коде. Более подробный список совместимых браузеров можно найти здесь .
источник
Помимо интерполяции строк, вы также можете вызывать функцию с помощью обратной галочки.
Проверьте стилизованный компонент . Они используют это интенсивно.
источник
Хорошая часть в том, что мы можем сделать основные математические операции напрямую:
Это стало действительно полезным в заводской функции:
источник