String.raw()
Статичний метод String.raw()
є функцією-тегом шаблонних літералів. Він схожий на префікс r
у мові Python, або на префікс @
у мові C# для рядкових літералів. (Але вони не ідентичні; дивіться пояснення у цій проблемі.) Він використовується для отримання сирої рядкової форми шаблонних рядків, тобто, підстановки (наприклад, ${foo}) обробляються, а екранування (наприклад, \n
) ні.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Синтаксис
String.raw(callSite, ...substitutions)
String.raw`templateString`
Параметри
callSite
- Добре сформований об'єкт-шаблон точки виклику, наприклад
{ raw: ['раз', 'два', 'три'] }
. ...substitutions
- Містить значення підстановок.
templateString
Шаблонний рядок
, може містити підстановки (${...}
).
Значення, що вертається
Сира рядкова форма наданого шаблонного рядка.
Винятки
Опис
У більшості випадків String.raw()
використовується з шаблонними рядками. Перший синтаксис, наведений вище, використовується лише зрідка, тому що рушій JavaScript викличе його для вас з правильними аргументами (як і інші функції-теги).
String.raw()
- єдина вбудована функція-тег шаблонних рядків. Вона працює як звичайна шаблонна функція та виконує об'єднання. Ви навіть можете перевизначити її звичайним кодом JavaScript.
Приклади
Використання String.raw()
String.raw`Привіт\n${2+3}!`;
// 'Привіт\n5!', символ після 'Привіт' -
// це не символ нового рядка,
// '\' та 'n' є двома символами.
String.raw`Привіт\u000A!`;
// 'Привіт\u000A!', те саме тут, цього разу ми отримуємо
// 6 символів, \, u, 0, 0, 0, A.
// Усі символи екранування будут неефективні,
// а зворотні слеши будуть присутні у отриманому рядку.
// Ви можете підтвертиди це, перевіривши властивість рядка .length.
let name = 'Боб';
String.raw`Привіт,\nце ${name}!`;
// 'Привіт,\nце Боб!', підстановки обробляються.
// Зазвичай, ви б не викликали String.raw() як функцію,
// але, щоб симулювати `раз${2 + 3}два${'Java' + 'Script'}три`, можна зробити:
String.raw({
raw: ['раз', 'два', 'три']
}, 2 + 3, 'Java' + 'Script'); // 'раз5дваJavaScriptтри'
// Зауважте, що перший аргумент - об'єкт з властивістю 'raw',
// чиїм значенням є ітерабельний об'єкт, що представляє відокремлені рядки
// у шаблонному літералі.
// Решта аргументів - це підстановки.
// Значенням 'raw' першого аргументу може бути будь-який ітерабельний об'єкт,
// навіть рядок! Наприклад, 'тест' сприймається як ['т', 'е', 'с', 'т'].
// Наступний код еквівалентний цьому
// `т${0}е${1}с${2}т`:
String.raw({ raw: 'тест' }, 0, 1, 2); // 'т0е1с2т'
Специфікації
Сумісність з веб-переглядачами
BCD tables only load in the browser
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.