Type Coercion di JavaScript
Type coercion adalah sebuah konsep dimana JavaScript engine akan mengubah tipe data tertentu ke sebuah tipe data yang lain (misalnya tipe data angka ke string, angka ke boolean dan sebagainya).
Ada dua jenis type coercion di JavaScript, yaitu implisit dan eksplisit.
Type corecion eksplisit adalah perubahan sebuah data dari tipe data tertentu ke tipe data yang dilakukan secara sengaja dengan menggunakan fungsi-fungsi atau kode tertentu.
Pada JavaScript ada banyak fungsi-fungsi yang bisa kamu gunakan untuk mengubah tipe data sebuah data menjadi tipe data yang lain, misalnya seperti berikut:
var a = ‘10’; var b = Number(a); console.log(a); // mencetak string “42” console.log(b); // mencetak angka “42”
Sedangkan type coercion implisit adalah type coercion yang terjadi akibat efek samping non-obvious dari sebuah operasi tertentu.
Misalnya kamu memiliki dua buah variabel dengan dua buah tipe data yang berbeda, satu buah variabel bertipe data string dan variabel yang lain bertipe data number, kemudian kamu melakukan operasi yang menjumlahkan atau menambahkan dua buah variabel pada saat melakukan “console.log()” seperti pada potongan kode berikut:
var namaDepan = ‘Budi’; var umut = 20; console.log(namaDepan + ‘ berusia ’ + umur);
Secara logis kita tidak bisa menjumlahkan dua buah variabel seperti pada contoh diatas karena memiliki tipe data yang berbeda.
Namun potongan kode diatas bisa dijalankan dan tidak akan terdapat error, JavaScript engine akan melakukan menjalankannya dan melakukan “console.log()” string “Budi berusia 20”.
Hal tersebut bisa terjadi karena pada contoh diatas JavaScript engine secara otomatis akan mengubah tipe data variabel “umur” yang awalnya bertipe data number menjadi string agar memiliki tipe data yang sama dengan variablel “nameDepan” dan kemudian kedua variabel tersebut bisa dijumlahkan.
Hal itu yang disebut dengan type coercion. Pada pemrograman secara umum lainnya, kita tidak untuk memungkinkan untuk melakukan hal tersebut, namun hal ini memungkinkan pada javaScript.
Pada contoh diatas kita mempraktekkan type coercion dengan menggabung string dan mengubah tipe data number menjadi string. Selain seperti pada contoh yang ada diatas, ada banyak contoh lain dari penggunaan tipe coercion pada JavaScript.
Misalnya seperti pada contoh potongan kode berikut:
var namaDepan = ‘Budi’; var umut = 20; var sudahDewasa = true; console.log(‘Apakah’ + namaDepan + ‘sudah dewasa? ’ + sudahDewasa + ‘, ia sudah berumur ’ + umur );
Jika kamu menjalankan potongan kode diatas kamu akan melihat hasil “Apakah Budi sudah dewasa? True, ia sudah berumur 20”.
Pada potongan kode diatas, variabel “sudahDewasa” adalah variable yang memiliki tipe data boolean, namun kemudian diubah juga menjadi tipe data string agar dapat digabungkan dengan string lainnya.
Misalnya pada contoh lain seperti pada potongan kode berikut:
var namaDepan, umur; namaDepan = ‘Budi’; console.log(namaDepan + ‘ berusia’ + umur);
Pada potongan kode diatas, kita mendeklarasikan dua buah variabel yang bernama “namaDepan” dan “umur. Kemudian kita mendefinisikan nilai dari variable “namaDepan” dengan nilai “Budi”, namun kita tidak mendefinisikan nilai untuk variabel “umur”.
Ini berarti, saat ini nilai untuk variabel “umur” adalah undefined. Seperti yang sudah kita pelajari pada bagian tipe data sebelumnya, undefined juga merupakan sebuah tipe data pada JavaScript.
Jika kamu menjalankan potongan kode diatas, maka kamu akan melihat hasil log di console berupa teks atau string dengan tulisan “Budi berusia undefined”.
Dengan hasil yang demikian, itu berarti nilai dari variabel “umur” yang memiliki tipe data undefined sudah diubah menjadi tipe data string sehingga bisa dilakukan operasi penjumlahan dengan variabel “namaDepan” dan menampilkan log pada console berupa string atau teks.
Ini berarti selain pada tipe data number, konsep type coercion pada JavaScript juga berlaku pada tipe-tipe data lain seperti tipe data boolean, undefined ataupun lainnya seperti yang sudah dicontohkan diatas.
Itu adalah bagaimana konsep type coercion bekarja pada JavaScript atau JavaScript engine, meski mungkin terlihat sepele konsep ini tetap penting untuk dimengerti agar kamu bisa menjadi developer JavaScript yang lebih baik.