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:

  1. 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".
  2. 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.
  3. 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.
  4. 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úmero 10.
  5. 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.
  1. 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".
  2. 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úmero 5.
  3. 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á em false.
  4. 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"].
  5. 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