JavaScript 5: conversión de tipos frente a coerción de tipos

Apr 01 2023
Coerción vs Conversión
La coerción de tipos y la conversión de tipos son dos conceptos relacionados pero distintos en JavaScript. Coerción de tipo: conversión implícita de un valor de un tipo a otro.

La coerción de tipos y la conversión de tipos son dos conceptos relacionados pero distintos en JavaScript.

Coerción de tipos : conversión implícita de un valor de un tipo a otro.
Conversión de tipo : conversión explícita de un valor de un tipo a otro.

Es posible que haya notado que si agrega una cadena y un número, probablemente no obtendrá el resultado deseado. Por ejemplo:

const string = "19"
const number = 5
console.log(string + number) // Output: 195, NOT 24

Ejemplos de coerción de tipos:

  1. Adición de un número y una cadena: cuando agrega un número y una cadena en JavaScript, el número se convierte en una cadena y se concatena con la otra cadena. Por ejemplo, "5" + 2dará como resultado la cadena "52".
  2. Comparación de diferentes tipos: cuando compara valores de diferentes tipos usando el ==operador, JavaScript intentará convertir uno o ambos valores en un tipo común antes de realizar la comparación. Por ejemplo, 0 == falsedevolverá true.
  3. Negación de un valor no booleano: cuando usa el !operador para negar un valor no booleano, se convertirá en un valor booleano. Por ejemplo, !""regresará trueporque una cadena vacía es falsa.
  4. Conversión implícita a un número: cuando usa un valor que no es un número en una operación matemática, se convertirá en un número. Por ejemplo, "5" * 2dará como resultado el número 10.
  5. Conversión implícita a un booleano: cuando usa un valor no booleano en un contexto booleano, se convertirá en un valor booleano. Por ejemplo, if ("hello") { ... }ejecutará el código en la instrucción if porque la cadena "hello"es verdadera.
  1. Conversión explícita a una cadena: puede usar la String()función para convertir un valor en una cadena. Por ejemplo, String(5)dará como resultado la cadena "5".
  2. Conversión explícita a un número: puede usar la Number()función para convertir un valor a un número. Por ejemplo, Number("5")dará como resultado el número 5.
  3. Conversión explícita a un booleano: puede usar la Boolean()función para convertir un valor a un booleano. Por ejemplo, Boolean(0)dará como resultado false.
  4. Conversión explícita a una matriz: puede usar el Array.from()método para convertir un objeto iterable (como una cadena o un objeto similar a una matriz) en una matriz. Por ejemplo, Array.from("hello")dará como resultado la matriz ["h", "e", "l", "l", "o"].
  5. Conversión explícita a una expresión regular: puede usar el RegExp()constructor para crear un objeto de expresión regular a partir de una cadena. Por ejemplo, new RegExp("hello", "i")creará una expresión regular que coincida con la cadena "hello"sin distinción entre mayúsculas y minúsculas.

Los ejemplos de la vida real en los que la coerción de tipos y la conversión de tipos podrían ser útiles incluyen:

  • Validación de la entrada del usuario : al aceptar la entrada de un usuario, es posible que deba convertir o forzar la entrada en un tipo diferente para garantizar que cumpla con ciertos requisitos. Por ejemplo, es posible que necesite convertir la entrada de un usuario de una cadena a un número antes de realizar una operación matemática en ella.
  • Análisis de datos de fuentes externas : al consumir datos de una fuente externa (como una API), es posible que deba convertir o coaccionar los datos a un formato con el que su aplicación pueda trabajar. Por ejemplo, es posible que necesite analizar una cadena de fecha en un Dateobjeto antes de usarlo en su aplicación.
  • Trabajar con diferentes tipos de datos : cuando trabaje con datos de diferentes tipos, es posible que deba convertir o coaccionar los datos para garantizar que se puedan usar en el contexto donde se necesitan. Por ejemplo, es posible que necesite convertir una representación de cadena de un color