O método estático String.raw()
é uma função tag de modelos literais, similar ao prefixo r
no Python ou o prefixo @
no C# para string literais (Mas não é idêntico, existe uma diferença, veja explicações nessa discussão). Ele é usado para pegar as strings no formato "cru" de modelos literais, isto é, substituições (ex: ${foo}) são processados, mas "escapes" (ex:. \n
) não são.
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.
Sintaxe
String.raw(callSite, ...sub)
String.raw`templateString`
Parâmetros
callSite
- Modelo bem-formatado de objeto de local de chamada, como
{ raw: ['foo', 'bar', 'baz'] }
. ...substitutions
- Contém os valores das substituições.
templateString
- Um modelo string, opcionalmente com substituições (
${...}
).
Valor retornado
A forma crua de uma string de um modelo string dado.
Exceções
Descrição
Na maioria dos casos, String.raw()
é usado com modelos de strings. A primeira sintaxe mencionada acima raramente é usada, porque o mecanismo JavaScript a chamará com os argumentos apropriados para você, assim como com outras funções de tag.
String.raw()
é a única função de tag embutida de strings de template; ele funciona exatamente como a função de modelo padrão e executa a concatenação. Você pode até reimplementá-lo com o código JavaScript normal.
Exemplos
Usando String.raw()
String.raw`Hi\n${2+3}!`;
// 'Hi\n5!', o caractere após 'Hi'
// não é um caractere de quebra de linha,
// '\' e 'n' são dois caracteres.
String.raw`Hi\u000A!`;
// 'Hi\u000A!', o mesmo aqui, agora nós teremos os caracteres
// \, u, 0, 0, 0, A, 6.
// Todos as formas de quebra de linha serão ineficazes
// e as contra barras estarão inclusas no valor retornado.
// Você pode confirmar isso verificando a propriedade .length
// da string.
let name = 'Bob';
String.raw`Hi\n${name}!`;
// 'Hi\nBob!', substituições são processadas.
// Normalmente você não chamaria String.raw() como uma função,
// mas para simular `t${0}e${1}s${2}t` você pode fazer:
String.raw({ raw: 'test' }, 0, 1, 2); // 't0e1s2t'
// Note que 'test', uma string, é um objeto array-like
// O código abaixo é equivalente a:
// `foo${2 + 3}bar${'Java' + 'Script'}baz`
String.raw({
raw: ['foo', 'bar', 'baz']
}, 2 + 3, 'Java' + 'Script'); // 'foo5barJavaScriptbaz'
Especificações
Especificação | Status | Comentário |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'String.raw' in that specification. |
Padrão | Definição inicial. |
ECMAScript (ECMA-262) The definition of 'String.raw' in that specification. |
Padrão em tempo real |
Compatibilidade de navegador
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.