Conversão de tipo 101: Noções básicas sobre coerção e conversão em JavaScript

Jan 30 2023
Coerção de tipo e conversão de tipo são conceitos em programação que se referem ao processo de conversão de um tipo de dados em outro. Coerção de tipo: A coerção de tipo refere-se à conversão automática de tipos de dados que ocorre em JavaScript quando diferentes tipos de dados são usados ​​juntos em uma operação.

Coerção de tipo e conversão de tipo são conceitos em programação que se referem ao processo de conversão de um tipo de dados em outro.

Tipo de Coerção:

A coerção de tipo refere-se à conversão automática de tipos de dados que ocorre em JavaScript quando diferentes tipos de dados são usados ​​juntos em uma operação. Por exemplo, se um número e uma string forem adicionados, o JavaScript converterá automaticamente o número em uma string para que a operação possa ser executada.

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

  • Usando os operadores == ou != para comparação, que executam coerção de tipo antes de fazer uma comparação
  • Usar o operador unário mais ( +) antes de um valor executará a coerção de tipo para Number. No entanto, o +sinal só pode aparecer uma vez e não deve ser seguido de espaço em branco. Por exemplo:
  • let x = "5";
    let y = +x;
    console.log(typeof y); // output: number
    

  • Usando a instrução if, que forçará um valor para um booleano antes de fazer uma comparação
  • Usando o &&, || e ?: operadores, que irão forçar o valor para um booleano antes de executar a operação.

Por outro lado, a conversão de tipos refere-se à conversão explícita de tipos de dados. Isso é feito usando funções de conversão como Number(), eString()Boolean()Symbol()

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

  • Number(): A Number()função é usada para converter um valor não numérico em um valor numérico. Por exemplo, se você deseja converter um valor de string de “10” em um número, use a Number()função assim:
  • 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
    

Use comparação de igualdade estrita ===em vez de comparação de igualdade abstrata ==. Evite depender da coerção de tipo implícita do JavaScript, especialmente em operações aritméticas, e sempre use conversão de tipo quando necessário.