Farih.co.id
Home Programming Memahami Type Conversion dan Coercion di JavaScript

Memahami Type Conversion dan Coercion di JavaScript

javascript featured

Pengetikan dinamis JavaScript berarti kode Anda bisa sedikit lebih sederhana, tetapi masih memungkinkan untuk membuat kesalahan. Untuk menghindarinya, ada gunanya mengetahui bagaimana JavaScript menyelesaikan nilai dengan tipe yang berbeda, untuk membandingkannya.


Memahami konversi tipe dan pemaksaan dalam JavaScript sangat penting untuk menulis program yang andal dan efisien. Setiap konsep memiliki kasus penggunaan khusus dan praktik terbaik yang dapat memengaruhi perilaku kode Anda.


Mengapa Jenis Konversi dan Pemaksaan Terjadi di JavaScript?

Bahasa JavaScript diketik secara dinamis. Ini berarti bahwa, tidak seperti bahasa yang diketik secara statis, JavaScript tidak mengharuskan Anda untuk secara eksplisit menentukan tipe data dari suatu variabel sebelum menggunakannya. Alih-alih, JavaScript menentukan jenis saat runtime bergantung pada nilai variabel.

Karena tipe data tidak dideklarasikan secara eksplisit hingga runtime, saat Anda melakukan operasi yang membutuhkan tipe data berbeda, JavaScript secara otomatis memeriksa kompatibilitasnya satu sama lain untuk operasi yang ingin Anda lakukan. Jika mereka kompatibel satu sama lain, operasi berjalan normal.

Namun, misalkan mereka tidak kompatibel dengan operasi—misalnya, mencoba menambahkan string dan angka. Dalam kasus seperti itu, JavaScript secara otomatis “memaksa” salah satu jenis agar sesuai dengan yang lain untuk memastikan bahwa operasi berhasil alih-alih menimbulkan kesalahan. Proses ini dikenal sebagai paksaan tipe atau paksaan implisit.

Ketik Paksaan

Pemaksaan tipe adalah konversi otomatis nilai dari satu tipe data ke tipe data lainnya, yang dilakukan oleh JavaScript selama menjalankan program untuk memastikan bahwa operasi berhasil dijalankan.

Tapi tidak semua tipe data bisa dipaksakan. String, angka, dan boolean adalah satu-satunya tipe data JavaScript yang akan dipaksa oleh bahasa menjadi tipe yang berbeda. Saat Anda mencoba melakukan operasi yang tidak kompatibel dengan tipe data yang tidak dapat dipaksakan oleh JavaScript, itu akan menimbulkan kesalahan.

Jenis paksaan JavaScript berdasarkan jenis operasi dan operator yang Anda gunakan dalam operasi.

Pemaksaan Dengan Operator “+”.

Dalam JavaScript, “+” operator memiliki dua perilaku berbeda tergantung pada jenis operannya. Itu dapat melakukan penambahan numerik dan penggabungan string. Ini dapat menyebabkan pemaksaan tipe ketika salah satu operan bukan tipe yang diharapkan.

Jika kedua operan adalah angka, “+” operator melakukan penambahan:

 let num1 = 42;
let num2 = 10;
let sum = num1 + num2;
console.log(sum);

Jika kedua operan adalah string, tanda “+” operator melakukan penggabungan string:

 let str1 = "Hello";
let str2 = "world";
let result = str1 + " " + str2;
console.log(result);

Namun, jika salah satu operan bukan string, JavaScript akan secara implisit memaksanya menjadi string sebelum melakukan penggabungan:

 
let num = 42;
let str = "Hello";


let result_1 = num + str;
console.log(result_1);


let bool = true;


let result_2 = bool + str;
console.log(result_2);

Pemaksaan Dengan Operator “-”.

Dalam JavaScript, “” operator terutama digunakan untuk operasi pengurangan. Ketika satu atau kedua operan dalam operasi yang melibatkan “” bukan angka, JavaScript akan mencoba memaksanya menjadi angka.

Saat kedua operan adalah angka, JavaScript melakukan pengurangan. Itu juga melakukan pengurangan ketika satu atau kedua operan adalah string yang mewakili angka:

 const num1 = 10;
const num2 = 20;
const result_1 = num2 - num1;
console.log(result_1);

const strNum = "10";
const strNum2 = "20";
const result = strNum2 - strNum;
console.log(result_1);

Ketika tak satu pun dari operan adalah angka atau string yang mewakili angka, JavaScript akan mencoba untuk memaksa tipe data menjadi setara numeriknya. Jika tipe data tidak memiliki ekuivalen numerik, operasi akan kembali NaN (Bukan Angka):

 
const boolNum = true;
const boolNum2 = false;
const result_1 = boolNum - boolNum2;
console.log(result_1);


const arrNum = [];
const arrNum2 = [];
const result_2 = arrNum - arrNum2;
console.log(result_2);


const objNum = {};
const result_3 = arrNum - objNum;
console.log(result_3);

Dalam contoh ini, JavaScript memaksa nilai boolean BENAR Dan PALSU dengan nilai ekuivalen numeriknya, 1 Dan 0, masing-masing. Array kosong dipaksa untuk 0, dan benda-benda kosong dipaksa untuk NaN.

Pemaksaan Dengan Kesetaraan (==)/(===) Operator

Dalam JavaScript, operator kesetaraan (== Dan ===) membandingkan nilai persamaan. Namun, mereka berperilaku berbeda karena paksaan tipe.

==” (kesetaraan longgar) operator melakukan pemaksaan tipe, artinya ia mencoba mengonversi operan ke tipe yang sama sebelum perbandingan:

 "10" == 10; 

Dalam contoh ini, JavaScript memaksa string “10” menjadi angka 10, sehingga ekspresinya menjadi BENAR.

Namun, “===” (persamaan ketat) operator tidak melakukan pemaksaan tipe. Ini membutuhkan nilai dan tipe yang sama agar perbandingan dapat dikembalikan BENAR:

 "10" === 10; 

Dalam contoh ini, perbandingan kembali PALSU karena operan memiliki tipe yang berbeda (string dan angka).

Anda umumnya harus menggunakan === (kesetaraan ketat) dalam JavaScript untuk menghindari perilaku pemaksaan tipe yang tidak terduga.

Pemaksaan tipe atau konversi implisit dapat menyebabkan perilaku yang tidak diharapkan karena sifatnya yang otomatis. Jika Anda perlu mengonversi tipe, disarankan untuk mengonversi tipe secara eksplisit. Proses konversi tipe secara eksplisit dikenal sebagai konversi tipe. Ini juga disebut sebagai pengecoran tipe dan konversi tipe eksplisit.

Ketik Konversi

Konversi tipe, juga dikenal sebagai pengecoran tipe, adalah proses eksplisit untuk mengonversi nilai dari satu tipe data ke tipe lainnya dalam JavaScript menggunakan fungsi bawaan seperti Nomor(), Rangkaian(), Boolean(), parseInt()Dan parseFloat().

Anda dapat melakukan konversi tipe dengan meneruskan nilai yang ingin Anda konversi ke fungsi konversi bawaan sebagai argumen. Fungsi-fungsi ini kemudian mengonversi nilai Anda ke jenis yang Anda inginkan.

Berikut adalah contoh menggunakan Nomor() fungsi:

 const numStr = "123";
const num = Number(numStr);
console.log(num);

Melewati string yang merupakan nomor yang valid sebagai argumen ke Nomor() fungsi akan mengembalikan angka. Melewati string yang merupakan nomor yang tidak valid akan dikembalikan NaN.

Berikut adalah contoh menggunakan Rangkaian() fungsi:

 const bool = true;
const str2 = String(bool);
console.log(str2);

Melewati tipe data apa pun ke dalam kecuali Simbol ke dalam Rangkaian() fungsi akan mengubah tipe data menjadi string.

Berikut adalah contoh menggunakan Boolean() fungsi:

 
const str = "hello";
const bool2 = Boolean(str);
console.log(bool2);

Melewati nilai-nilai kebenaran ke Boolean() fungsi mengembalikan boolean “true” sementara meneruskan nilai falsy mengembalikan boolean “false”.

Berikut adalah contoh menggunakan ParseInt() Dan ParseFloat() fungsi:

 
const numStr = "123.00";
const num1 = parseInt(numStr);
console.log(num1);


const floatStr = "3.14";
const num2 = parseFloat(floatStr);
console.log(num2);

Itu parseInt() fungsi mem-parsing argumen string dan mengembalikan integer. Itu parseFloat() fungsi mengubah string menjadi angka floating-point.

Memanfaatkan Pemaksaan dan Konversi Jenis

Dengan memahami pemaksaan dan konversi tipe, Anda dapat membuat keputusan berdasarkan informasi tentang kapan dan bagaimana memanfaatkannya secara efektif dalam kode Anda. Penting untuk mencapai keseimbangan yang tepat, menggunakan pemaksaan tipe dengan bijaksana untuk kode yang ringkas dan nyaman dan mengandalkan konversi tipe eksplisit untuk konversi tipe yang disengaja dan dapat diprediksi.

Comment
Share:

Leave a Reply

Your email address will not be published. Required fields are marked *

Ad