--- 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: ['раз', 'два', 'три'] }
....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т'
Специфікація |
---|
{{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")}}