--- title: String.raw() slug: Web/JavaScript/Reference/Global_Objects/String/raw tags: - ECMAScript 2015 - JavaScript - String - метод - рядок translation_of: Web/JavaScript/Reference/Global_Objects/String/raw ---
Статичний метод String.raw() є функцією-тегом шаблонних літералів. Він схожий на префікс r у мові Python, або на префікс @ у мові C# для рядкових літералів. (Але вони не ідентичні; дивіться пояснення у цій проблемі.) Він використовується для отримання сирої рядкової форми шаблонних рядків, тобто, підстановки (наприклад, ${foo}) обробляються, а екранування (наприклад, \n) ні.
String.raw(callSite, ...substitutions)
String.raw`templateString`
callSite{ raw: ['раз', 'два', 'три'] }....substitutionstemplateString${...}).Сира рядкова форма наданого шаблонного рядка.
У більшості випадків 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т'
| Специфікація |
|---|
| {{SpecName('ESDraft', '#sec-string.raw', 'String.raw')}} |
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.
{{Compat("javascript.builtins.String.raw")}}