String.raw()

Это экспериментальная технология, часть предложения Harmony (ECMAScript 6).
Поскольку спецификация этой технологии ещё не стабилизировалась, проверьте таблицу совместимости её использования в различных браузерах. Также обратите внимание, что синтаксис и поведение экспериментальной технологии могут быть изменены в будущих версиях браузеров в соответствии с изменениями в спецификации.

Сводка

Статический метод String.raw() является теговой функцией для шаблонных строк; подобно префиксу r в Python или префиксу @ в C# для строковых литералов, эта функция используется для получения необработанной строки из шаблона.

Синтаксис


String.raw(callSite, ...substitutions)

String.raw`templateString`

Параметры

callSite
Правильно сформированный объект вызова, например { raw: 'string' }.
...substitutions
Значения подстановок.
templateString
Шаблонная строка, возможно с подстановками (${...}).

Выбрасываемые исключения

TypeError
Если первый аргумент не является правильно сформированным объектом вызова, выбрасывается исключение TypeError.

Описание

В большинстве случаев метод String.raw() используется вместе с шаблонными строками. Первый синтаксис, показанный выше, используется редко, поскольку движок JavaScript будет вызывать метод с соответствующими аргументами, подобно другим теговым функциям.

Метод String.raw() является единственной встроенной теговой функцией шаблонных строк, выступающей стандартной функцией по объединению их фрагментов. Вы и сами могли бы реализовать подобную функциональность на JavaScript.

Примеры

Пример: использование метода String.raw()

String.raw`Привет\n${2+3}!`;
// 'Привет\n5!', символ после 'Привет' не является символом новой строки,
// '\' и 'n' - это два символа.

String.raw`Привет\u000A!`;
// 'Привет\u000A!', а здесь мы получим символы
//  \, u, 0, 0, 0, A, всего 6 символов.
// Экранирующие символы не имеют особого значения и
// обратные слеши будут присутствовать в выходной строке.
// Вы можете убедиться в этом, проверив свойство .length строки.

let name = 'Боб';
String.raw`Привет\n${name}!`;
// 'Привет\nБоб!', сработала подстановка.

// Обычно вам не нужно вызывать метод String.raw() как функцию,
// но никто не запрещает вам делать это:
String.raw({ raw: 'тест' }, 0, 1, 2);
// 'т0е1с2т'

Спецификации

Спецификация Статус Комментарии
ECMAScript 2015 (6th Edition, ECMA-262)
Определение 'String.raw' в этой спецификации.
Стандарт Изначальное определение.

Совместимость с браузерами

Возможность Chrome Firefox (Gecko) Internet Explorer Opera Safari
Базовая поддержка Нет 34 (34) Нет Нет Нет
Возможность Android Chrome для Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Базовая поддержка Нет Нет 34.0 (34) Нет Нет Нет

Смотрите также

Метки документа и участники

 Внесли вклад в эту страницу: oleg_s, Mingun, dtretyakov
 Обновлялась последний раз: oleg_s,