Em JavaScript, um backtick † parece funcionar da mesma forma que uma aspas simples. Por exemplo, eu posso usar um backtick para definir uma string como esta:
var s = `abc`;
Existe uma maneira pela qual o comportamento do backtick realmente difere do de uma única citação?
† Observe que entre os programadores, "backtick" é um nome para o que geralmente é chamado de sotaque grave . Às vezes, os programadores também usam os nomes alternativos "backquote" e "backgrave". Além disso, no Stack Overflow e em outros lugares, outras grafias comuns para "backtick" são "back-tick" e "back tick".
Respostas:
Esse é um recurso chamado literal de modelo .
Eles foram chamados de "cadeias de modelos" em edições anteriores da especificação do ECMAScript 2015.
Os literais de modelo são suportados pelo Firefox 34, Chrome 41 e Edge 12 e superior, mas não pelo Internet Explorer.
Literais de modelo podem ser usados para representar cadeias de linhas múltiplas e podem usar "interpolação" para inserir variáveis:
Resultado:
O que é mais importante, eles podem conter não apenas um nome de variável, mas qualquer expressão JavaScript:
fonte
["a", "b"].join(""); // both string elements written in new lines
. Mas, além disso pode-se usar um "transpiler" como Babel para converter ES6 + para ES5alert`1`
.O ECMAScript 6 apresenta um novo tipo de literal de cadeia de caracteres, usando o backtick como delimitador. Esses literais permitem que expressões básicas de interpolação de cadeia sejam incorporadas, que são então analisadas e avaliadas automaticamente.
Como você pode ver, usamos
`
uma série de caracteres, que são interpretados como uma cadeia de caracteres literal, mas qualquer expressão do formulário${..}
é analisada e avaliada imediatamente em linha.Um benefício muito bom dos literais de string interpolados é que eles podem se dividir em várias linhas:
Expressões interpoladas
É permitido que qualquer expressão válida apareça dentro
${..}
de um literal de seqüência de caracteres interpolado, incluindo chamadas de função, chamadas de expressão de função em linha e até mesmo outros literais de seqüência de caracteres interpolados!Aqui, o
`${who}s`
literal interno da string interpolada foi uma conveniência um pouco melhor para nós quando combinamos awho
variável com a"s"
string, em oposição awho + "s"
. Além disso, para manter uma nota, uma string interpolada literalmente tem um escopo lexicamente onde aparece, sem um escopo dinâmico de forma alguma:Usar o literal do modelo para o HTML é definitivamente mais legível, reduzindo o aborrecimento.
A maneira antiga e simples:
Com o ECMAScript 6:
Literais de modelo com a tag
Também podemos marcar uma sequência de modelo, quando uma sequência de modelo é marcada, os literais e substituições são passados para a função que retorna o valor resultante.
Podemos usar o operador spread aqui para passar vários valores. O primeiro argumento - que chamamos de strings - é uma matriz de todas as strings simples (o material entre quaisquer expressões interpoladas).
Em seguida, reunir-se todos os argumentos subseqüentes em uma matriz valores chamados usando o
... gather/rest operator
, embora você poderia naturalmente ter deixado-los como individuais parâmetros nomeados seguintes as cordas de parâmetros como fizemos acima (value1
,value2
, etc.).Os argumentos reunidos em nossa matriz de valores são os resultados das expressões de interpolação já avaliadas encontradas na cadeia literal. Um literal de sequência marcado é como uma etapa de processamento após a avaliação das interpolações, mas antes da compilação do valor final da sequência, permitindo maior controle sobre a geração da sequência a partir do literal. Vejamos um exemplo de criação de modelos reutilizáveis.
Raw Strings
Nossas funções de tag recebem um primeiro argumento que chamamos de strings, que é uma matriz. Mas há um bit adicional de dados incluído: as versões não processadas brutas de todas as strings. Você pode acessar esses valores de cadeia bruta usando a
.raw
propriedade, assim:Como você pode ver, a versão bruta da string preserva a
\n
sequência de escape , enquanto a versão processada da string a trata como uma nova linha real sem escape. ECMAScript 6 vem com uma função built-in que pode ser usado como um Tag literal string:String.raw(..)
. Ele simplesmente passa pelas versões brutas das strings:fonte
myTaggedLiteral`test ${someText} ${2 + 3}`;
devam ser//["test ", " "]
(ou seja, cordas não cortadas).Backticks (
`
) são usados para definir literais de modelo. Literais de modelo são um novo recurso do ECMAScript 6 para facilitar o trabalho com seqüências de caracteres.Recursos:
Nota: podemos facilmente usar aspas simples (
'
) e aspas duplas ("
) dentro dos backticks (`
).Exemplo:
Para interpolar as variáveis ou expressões, podemos usar a
${expression}
notação para isso.Seqüências de linhas múltiplas significam que você não precisa mais usar
\n
para novas linhas.Exemplo:
Resultado:
fonte
Os backticks incluem literais de modelo, anteriormente conhecidos como seqüências de caracteres de modelo. Literais de modelo são literais de sequência que permitem expressões incorporadas e recursos de interpolação de sequência.
Literais de modelo têm expressões incorporadas em espaços reservados, denotadas pelo sinal de dólar e colchetes em torno de uma expressão, ou seja
${expression}
. O espaço reservado / expressões são passados para uma função. A função padrão apenas concatena a string.Para escapar de um backtick, coloque uma barra invertida antes dele:
Use backticks para escrever com mais facilidade uma string de várias linhas:
ou
JavaScript vanilla vs.
ou
Sequências de escape:
\u
, por exemplo\u00A9
\u{}
, por exemplo\u{2F804}
\x
, por exemplo\xA9
\
e (a) dígito (s), por exemplo\251
fonte
Resumo:
Backticks em JavaScript é um recurso que é introduzido no ECMAScript 6 // ECMAScript 2015 para facilitar cadeias dinâmicas. Esse recurso do ECMAScript 6 também é denominado literal de cadeia de modelo . Oferece as seguintes vantagens quando comparado às seqüências normais:
''
ou""
) não podem ter quebras de linha.${myVariable}
sintaxe.Exemplo:
Compatibilidade do navegador:
O literal da cadeia de modelo é suportado nativamente por todos os principais fornecedores de navegadores (exceto o Internet Explorer). Portanto, é bastante útil usar no seu código de produção. Uma lista mais detalhada das compatibilidade do navegador pode ser encontrada aqui .
fonte
Além da interpolação de string, você também pode chamar uma função usando back-tick.
Verifique o componente estilizado . Eles usam muito.
fonte
A parte boa é que podemos fazer matemática básica diretamente:
Tornou-se realmente útil em uma função de fábrica:
fonte