Conversione di tipo 101: comprensione della coercizione e del casting in JavaScript

Jan 30 2023
La coercizione del tipo e il casting del tipo sono concetti nella programmazione che si riferiscono al processo di conversione di un tipo di dati in un altro. Coercizione del tipo: la coercizione del tipo si riferisce alla conversione automatica dei tipi di dati che si verifica in JavaScript quando diversi tipi di dati vengono utilizzati insieme in un'operazione.

La coercizione del tipo e il casting del tipo sono concetti nella programmazione che si riferiscono al processo di conversione di un tipo di dati in un altro.

Tipo Coercizione:

La coercizione del tipo si riferisce alla conversione automatica dei tipi di dati che si verifica in JavaScript quando diversi tipi di dati vengono utilizzati insieme in un'operazione. Ad esempio, se un numero e una stringa vengono sommati insieme, JavaScript convertirà automaticamente il numero in una stringa in modo che l'operazione possa essere eseguita.

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

  • Utilizzo degli operatori == o != per il confronto, che eseguono la coercizione del tipo prima di eseguire un confronto
  • L'utilizzo dell'operatore unario più ( +) prima di un valore eseguirà la coercizione del tipo su Number. Tuttavia, il +segno può comparire una sola volta e non deve essere seguito da spazi bianchi. Ad esempio:
  • let x = "5";
    let y = +x;
    console.log(typeof y); // output: number
    

  • Usando l'istruzione if, che costringerà un valore a un booleano prima di fare un confronto
  • Usando &&, || e ?: operatori, che costringeranno il valore a un valore booleano prima di eseguire l'operazione.

D'altra parte, il casting dei tipi si riferisce alla conversione esplicita dei tipi di dati. Questo viene fatto usando funzioni di casting come Number(), String(), Boolean()eSymbol()

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

  • Number(): La Number()funzione viene utilizzata per convertire un valore non numerico in un valore numerico. Ad esempio, se desideri convertire un valore stringa di "10" in un numero, devi utilizzare la Number()funzione in questo modo:
  • 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
    

Utilizzare il confronto di uguaglianza rigorosa ===invece del confronto di uguaglianza astratto ==. Evita di fare affidamento sulla coercizione di tipo implicita di JavaScript, specialmente nelle operazioni aritmetiche, e usa sempre il casting di tipo dove necessario.