Conversión de tipo 101: comprensión de la coerción y la conversión en JavaScript

Jan 30 2023
La coerción de tipos y la conversión de tipos son conceptos en programación que se refieren al proceso de convertir un tipo de datos en otro. Coerción de tipo: La coerción de tipo hace referencia a la conversión automática de tipos de datos que se produce en JavaScript cuando se utilizan diferentes tipos de datos juntos en una operación.

La coerción de tipos y la conversión de tipos son conceptos en programación que se refieren al proceso de convertir un tipo de datos en otro.

Tipo Coerción:

La coerción de tipos hace referencia a la conversión automática de tipos de datos que se produce en JavaScript cuando se utilizan juntos diferentes tipos de datos en una operación. Por ejemplo, si se suman un número y una cadena, JavaScript convertirá automáticamente el número en una cadena para que se pueda realizar la operación.

let num = 5;
let str = "3";
console.log(num + str);  //output: "53"

  • Uso de los operadores == o != para la comparación, que realizan una conversión de tipos antes de realizar una comparación
  • El uso del operador unario más ( +) antes de un valor realizará una conversión de tipo a Número. Sin embargo, el +signo solo puede aparecer una vez y no debe ir seguido de un espacio en blanco. Por ejemplo:
  • let x = "5";
    let y = +x;
    console.log(typeof y); // output: number
    

  • Usando la declaración if, que forzará un valor a un valor booleano antes de hacer una comparación
  • Usando el &&, || y ?: operadores, que coaccionarán el valor a un booleano antes de realizar la operación.

Por otro lado, la conversión de tipos se refiere a la conversión explícita de tipos de datos. Esto se hace usando funciones de conversión como Number(), String()yBoolean()Symbol()

let str = '5';
let num = Number(str);
console.log(num); //output: 5

  • Number(): La Number()función se utiliza para convertir un valor no numérico en un valor numérico. Por ejemplo, si desea convertir un valor de cadena de "10" en un número, usaría la Number()función de esta manera:
  • let x = "5";
    let y = x+10 // output: 510
    let z= Number(x)+10;
    console.log(y); // output: 510
    console.log(z); // output: 15
    

    let intValue = parseInt("3.14");
    console.log(floatValue); // Output: 3
    

    console.log(parseInt('22.5')); // Output: 22
    console.log(parseFloat('22.5')); // Output: 22.5
    console.log(Number('22.5')); // Output: 22.5
    
    console.log(parseInt('070')); // Output: 70
    console.log(parseFloat('070')); // Output: 70
    console.log(Number('070')); // Output: 70
    
    console.log(parseInt('1234blue')); // Output: 1234
    console.log(parseFloat('1234blue')); // Output: 1234
    console.log(Number('1234blue')); // Output: NaN
    
    console.log(parseInt('0xFF')); // Output: 255
    console.log(parseFloat('0xFF')); // Output: 0
    console.log(Number('0xFF')); // Output: 255
    
    console.log(parseInt("10 20 30")); // 10
    console.log(parseFloat("10 20 30")); // 10
    console.log(Number("10 20 30")); // NaN
    

    let num = 10;
    console.log(String(num)); // "10"
    
    let bool = true;
    console.log(String(bool)); // "true"
    
    let obj = {name: "John"};
    console.log(String(obj)); // "[object Object]"
    
    let arr = [1, 2, 3];
    console.log(String(arr)); // "1,2,3"
    
    let date = new Date();
    console.log(String(date)); // "Sun Jan 29 2023 18:52:01 GMT+0000 (Coordinated Universal Time)"
    

    let value = 0;
    console.log(Boolean(value)); // false
    
    value = "hello";
    console.log(Boolean(value)); // true
    
    value = undefined;
    console.log(Boolean(value)); // false
    
    value = {};
    console.log(Boolean(value)); // true
    
    value = -1;
    console.log(Boolean(value)); // true
    

Utilice la comparación de igualdad estricta ===en lugar de la comparación de igualdad abstracta ==. Evite confiar en la coerción de tipos implícita de JavaScript, especialmente en operaciones aritméticas, y siempre use la conversión de tipos cuando sea necesario.