Qualquer conjunto de caracteres (letras, números, símbolos etc.) entre um conjunto de
aspas duplas ("
), aspas simples ('
) ou chaves
(`) é uma string primitiva. Você já viu alguns exemplos de strings neste
curso: as instâncias de console.log
no módulo anterior continham
primitivas de string.
console.log( "Hello, World." );
> Hello, World.
"Hello, World."
é uma string primitiva. Você vai receber o mesmo resultado com aspas simples
ou chaves:
console.log( 'Hello, World.' );
> Hello, World.
console.log(`Hello, World.`);
> Hello, World.
Uma série de caracteres entre aspas é chamada de string literal. As aspas duplas e simples se comportam da mesma maneira, e uma pode conter a outra como um caractere na própria string:
console.log( "I'm a string." );
> I'm a string.
console.log( '"A string," I said.' );
> "A string," I said.
Uma instância do mesmo caractere de fechamento dentro da string "fecha" a string, provavelmente causando erros:
console.log( '"I'm a string," I said.' );
> Uncaught SyntaxError: missing ) after argument list
Para evitar isso, faça o escape do caractere usando uma barra invertida (\
):
console.log( '"I\'m a string," I said.' );
> "I'm a string," I said.
Objeto de string
Quando chamado como uma função, o objeto String
converte um valor especificado em um
literal de string.
let myString = String( 10 );
myString
> "10"
typeof myString
> string
Conforme detalhado na herança prototípica,
raramente será necessário usar o objeto String
como um construtor. Ele cria um
objeto de string contendo o valor especificado, além dos métodos e
propriedades já fornecidos pelo objeto String
, em vez de um literal de string.
let stringObj = new String( "My new string." );
typeof stringObj
> object
stringObj
> String { "My new string." }
Concatenação
Quando usado no contexto de strings em vez de números, um único sinal de adição (+
)
atua como um operador de concatenação, combinando vários valores de string em uma única
string:
console.log( "My" + " string." );
> My string.
Literais de string e de modelo
Aspas simples, aspas duplas e chaves podem ser usadas de forma intercambiável para criar strings primitivas. No entanto, também é possível usar colchetes para especificar literales de modelo (às vezes chamados de "strings de modelo"). Ao contrário dos literals de string criados por aspas simples ou duplas, os literais de modelo permitem strings de várias linhas e interpolação de strings.
const myString = "This
is a string.";
> Uncaught SyntaxError: "" string literal contains an unescaped line break
const myString = `This
is a string.`;
console.log( myString );
> This
is a string.
Os literais de modelo podem conter expressões de marcador de posição marcadas por um sinal de dólar
e chaves (${}
). Esses marcadores são "interpolados" por padrão,
o que significa que o resultado da expressão substitui o marcador na string
final.
console.log( "The result is " + ( 2 + 4 ) + "." );
> The result is 6.
console.log( `The result is ${ 2 + 4 }.` );
> The result is 6.
Um modelo literal pode ser transmitido a uma função personalizada para criar um modelo com tags, uma chamada de função que usa um único modelo literal como um conjunto de argumentos e permite que os marcadores de posição sejam preenchidos com base na lógica definida pelo autor.
O primeiro argumento de uma função de tag contém uma matriz de valores de string, e os argumentos restantes definem os marcadores de posição. Essa matriz de valores de string é criada "dividindo" o literal de modelo em cada marcador de posição que contém. O primeiro elemento na matriz contém todos os caracteres até o primeiro marcador de posição, o segundo elemento contém todos os caracteres entre o primeiro e o segundo marcadores de posição e assim por diante. Cada marcador de posição é transmitido à função de tag como um valor independente com um marcador de posição associado.
const myNoun = "template literal";
function myTagFunction( myStrings, myPlaceholder ) {
const myInitialString = myStrings[ 0 ];
console.log( `${ myInitialString }modified ${ myPlaceholder }.` );
}
myTagFunction`I'm a ${ myNoun }.`;
> "I'm a modified template literal."
Teste seu conhecimento
Qual caractere é usado para escapar de caracteres?
/
)∖
)"
)Qual caractere é usado para concatenação?
.
+
&