Esta página foi traduzida do inglês pela comunidade.Saiba mais e junte-se à comunidade MDN Web Docs.
String.raw()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since setembro de 2015.
O método estáticoString.raw() é uma função tag demodelos literais, similar ao prefixor no Python ou o prefixo@ no C# para string literais (Mas não éidêntico, existe uma diferença, veja explicações nessadiscussã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.
In this article
Experimente
// Create a variable that uses a Windows// path without escaping the backslashes:const filePath = String.raw`C:\Development\profile\aboutme.html`;console.log(`The file was uploaded from: ${filePath}`);// Expected output: "The file was uploaded from: C:\Development\profile\aboutme.html"Sintaxe
String.raw(callSite, ...sub)String.raw`templateString`
Parâmetros
callSiteModelo bem-formatado de objeto de local de chamada, como
{ raw: ['foo', 'bar', 'baz'] }....substitutionsContém os valores das substituições.
templateStringUmmodelo 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 outrasfunçõ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
>UsandoString.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
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-string.raw> |