Type Conversion 101: Memahami Pemaksaan dan Casting dalam JavaScript

Jan 30 2023
Pemaksaan tipe dan pengecoran tipe adalah konsep dalam pemrograman yang mengacu pada proses konversi satu tipe data ke tipe lainnya. Pemaksaan Tipe: Pemaksaan tipe mengacu pada konversi otomatis tipe data yang terjadi dalam JavaScript ketika berbagai tipe data digunakan bersama dalam suatu operasi.

Pemaksaan tipe dan pengecoran tipe adalah konsep dalam pemrograman yang mengacu pada proses konversi satu tipe data ke tipe lainnya.

Ketik Paksaan:

Pemaksaan tipe mengacu pada konversi otomatis tipe data yang terjadi di JavaScript ketika berbagai tipe data digunakan bersama dalam suatu operasi. Misalnya, jika angka dan string dijumlahkan, JavaScript akan secara otomatis mengonversi angka menjadi string sehingga operasi dapat dilakukan.

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

  • Menggunakan operator == atau != untuk perbandingan, yang melakukan pemaksaan tipe sebelum membuat perbandingan
  • Menggunakan operator unary plus ( +) sebelum nilai akan melakukan pemaksaan tipe ke Number. Namun, +tanda tersebut hanya dapat muncul satu kali dan tidak boleh diikuti oleh spasi putih. Misalnya:
  • let x = "5";
    let y = +x;
    console.log(typeof y); // output: number
    

  • Menggunakan pernyataan if, yang akan memaksa nilai menjadi boolean sebelum membuat perbandingan
  • Menggunakan &&, || dan ?: operator, yang akan memaksa nilai menjadi boolean sebelum melakukan operasi.

Di sisi lain, pengecoran tipe mengacu pada konversi tipe data secara eksplisit. Ini dilakukan dengan menggunakan fungsi casting seperti Number(), String(), Boolean()danSymbol()

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

  • Number(): Number()Fungsi ini digunakan untuk mengonversi nilai non-numerik menjadi nilai numerik. Misalnya, jika Anda ingin mengonversi nilai string “10” menjadi angka, Anda akan menggunakan fungsi Number()seperti ini:
  • 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
    

Gunakan perbandingan kesetaraan yang ketat ===, bukan perbandingan kesetaraan abstrak ==. Hindari mengandalkan pemaksaan tipe implisit JavaScript, terutama dalam operasi aritmatika, dan selalu gunakan pengecoran tipe jika diperlukan.