JavaScript 5 — conversão de tipo vs coerção de tipo
Apr 01 2023
Coerção vs Conversão
Coerção de tipo e conversão de tipo são dois conceitos relacionados, mas distintos, em JavaScript. Coerção de tipo: conversão implícita de um valor de um tipo para outro.
Coerção de tipo e conversão de tipo são dois conceitos relacionados, mas distintos, em JavaScript.
Coerção de tipo : conversão implícita de um valor de um tipo para outro.
Conversão de tipo : conversão explícita de um valor de um tipo para outro.
Você deve ter notado que, se adicionar uma string e um número juntos, provavelmente não obterá a saída desejada. Por exemplo:
const string = "19"
const number = 5
console.log(string + number) // Output: 195, NOT 24
Exemplos de coerção de tipo:
- Adição de um número e uma string: quando você adiciona um número e uma string em JavaScript, o número será convertido em uma string e concatenado com a outra string. Por exemplo,
"5" + 2resultará na string"52". - Comparação de tipos diferentes: quando você compara valores de tipos diferentes usando o
==operador, o JavaScript tentará coagir um ou ambos os valores a um tipo comum antes de fazer a comparação. Por exemplo,0 == falseretornarátrue. - Negação de um valor não booleano: quando você usa o
!operador para negar um valor não booleano, ele será convertido em um valor booleano. Por exemplo,!""retornarátrueporque uma string vazia é falsa. - Conversão implícita para um número: quando você usa um valor não numérico em uma operação matemática, ele será convertido em um número. Por exemplo,
"5" * 2resultará no número10. - Conversão implícita para um booleano: quando você usa um valor não booleano em um contexto booleano, ele será convertido em um valor booleano. Por exemplo,
if ("hello") { ... }executará o código na instrução if porque a string"hello"é verdadeira.
- Conversão explícita em uma string: você pode usar a
String()função para converter um valor em uma string. Por exemplo,String(5)resultará na string"5". - Conversão explícita para um número: você pode usar a
Number()função para converter um valor em um número. Por exemplo,Number("5")resultará no número5. - Conversão explícita em um booleano: você pode usar a
Boolean()função para converter um valor em um booleano. Por exemplo,Boolean(0)resultará emfalse. - Conversão explícita em uma matriz: você pode usar o
Array.from()método para converter um objeto iterável (como uma string ou um objeto semelhante a uma matriz) em uma matriz. Por exemplo,Array.from("hello")resultará na matriz["h", "e", "l", "l", "o"]. - Conversão explícita em uma expressão regular: você pode usar o
RegExp()construtor para criar um objeto de expressão regular a partir de uma string. Por exemplo,new RegExp("hello", "i")criará uma expressão regular que corresponda à string"hello"sem diferenciar maiúsculas de minúsculas.
Exemplos da vida real em que a coerção de tipo e a conversão de tipo podem ser úteis incluem:
- Validando a entrada do usuário : ao aceitar a entrada de um usuário, pode ser necessário converter ou coagir a entrada em um tipo diferente para garantir que ela atenda a determinados requisitos. Por exemplo, você pode precisar converter a entrada de um usuário de uma string para um número antes de executar uma operação matemática nela.
- Analisando dados de fontes externas : ao consumir dados de uma fonte externa (como uma API), pode ser necessário converter ou coagir os dados em um formato com o qual seu aplicativo possa trabalhar. Por exemplo, você pode precisar analisar uma string de data em um
Dateobjeto antes de usá-lo em seu aplicativo. - Trabalhando com diferentes tipos de dados : ao trabalhar com dados de diferentes tipos, pode ser necessário converter ou coagir os dados para garantir que possam ser usados no contexto em que são necessários. Por exemplo, você pode precisar converter uma representação de string de uma cor
Christopher Nolan uma vez se arrependeu de ter lido o 'roteiro de Pulp Fiction' de Quentin Tarantino





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)