Konversi Otomatis Tipe Data
Seperti yang sudah Anda ketahui, string dalam JavaScript harus diberikan dalam tanda kutip. Bisa saja terjadi, bahwa semua karakter string adalah angka:
let a = '123';
Dalam hal ini, variabel a juga merupakan
string, tetapi dengan nuansa tertentu.
Inti nuansanya adalah sebagai berikut: jika operasi matematika apapun dilakukan pada string yang berisi angka - operasi tersebut akan dijalankan seolah-olah kita benar-benar memiliki angka, bukan string:
alert('2' * '3'); // menampilkan 6
Dalam kasus ini, JavaScript melihat bahwa kita berusaha menjalankan operasi yang tidak valid untuk string, tetapi valid untuk angka.
Ia juga melihat bahwa secara faktual string kita - adalah angka dalam tanda kutip. Oleh karena itu, JavaScript secara otomatis melakukan konversi string ini menjadi angka dan menjalankan operasi matematika yang sesuai pada mereka.
Hal seperti ini bekerja, jika dalam string kita hanya terdapat
angka. Jika ada setidaknya satu huruf
- JavaScript akan menganggap operasi tersebut tidak valid
dan menjadikan hasilnya nilai NaN:
alert('2' * '3s'); // menampilkan NaN
Selain itu, konversi otomatis terjadi, jika operasi tersebut secara matematis valid, tetapi tidak valid untuk string.
Misalnya, string tidak dapat (sedangkan angka dapat) dikalikan, dibagi, dikurangkan, oleh karena itu dalam semua operasi seperti itu akan terjadi konversi otomatis string yang berisi angka menjadi angka.
Namun, string, seperti halnya angka, dapat dijumlahkan
dengan menggunakan operator +. Ini berarti,
dalam kasus penjumlahan, tidak akan terjadi konversi otomatis:
let a = '1' + '2';
alert(a); // menampilkan '12' - terjadi penjumlahan string
Jika salah satu suku adalah angka, dan yang lainnya - adalah string, maka string selalu yang menang:
let a = 1 + '2';
alert(a); // menampilkan '12'
Dalam kasus seperti ini, JavaScript, sebaliknya, secara otomatis mengonversi angka menjadi string dan melakukan penjumlahan string.
Namun, ada nuansa, ketika jumlah sukunya lebih banyak dari dua: dalam hal ini, konversi ke tipe tertentu tergantung pada urutan eksekusi operasi.
Dalam contoh berikut, pertama-tama 2 dan 3
akan dijumlahkan sebagai angka, kemudian hasilnya ditambahkan
ke string '1' sudah sebagai string '5',
yang pada akhirnya menghasilkan string '15':
let a = '1' + (2 + 3);
alert(a); // menampilkan '15'
Namun, jika tanda kurung dihilangkan, semuanya akan dijumlahkan
dari kiri ke kanan. Artinya, pertama-tama string '1'
ditambahkan dengan angka 2 dan hasilnya
menjadi string '12'. Kemudian string ini
ditambahkan dengan angka 3 dan hasilnya
menjadi string '123':
let a = '1' + 2 + 3;
alert(a); // menampilkan '123'
Namun, dalam contoh berikut, angka 2
dan 3 ditulis di awal, jadi pertama-tama
mereka akan dijumlahkan sebagai angka, menghasilkan
angka 5, kemudian angka ini ditambahkan dengan
string '1', menghasilkan string '51':
let a = 2 + 3 + '1';
alert(a); // menampilkan '51'
Tanpa menjalankan kode, tentukan apa yang akan ditampilkan pada layar:
let a = '5' + '2';
alert(a);
Tanpa menjalankan kode, tentukan apa yang akan ditampilkan pada layar:
let a = '5' + 2;
alert(a);
Tanpa menjalankan kode, tentukan apa yang akan ditampilkan pada layar:
let a = 5 + '2';
alert(a);
Tanpa menjalankan kode, tentukan apa yang akan ditampilkan pada layar:
let a = 5 + 2;
alert(a);
Tanpa menjalankan kode, tentukan apa yang akan ditampilkan pada layar:
let a = '5' * '2';
alert(a);
Tanpa menjalankan kode, tentukan apa yang akan ditampilkan pada layar:
let a = '5' - '2';
alert(a);
Tanpa menjalankan kode, tentukan apa yang akan ditampilkan pada layar:
let a = '5' / '2';
alert(a);
Tanpa menjalankan kode, tentukan apa yang akan ditampilkan pada layar:
let a = '5' % '2';
alert(a);
Tanpa menjalankan kode, tentukan apa yang akan ditampilkan pada layar:
let a = '5s' * '2';
alert(a);
Tanpa menjalankan kode, tentukan apa yang akan ditampilkan pada layar:
let a = '5s' + '2';
alert(a);
Tanpa menjalankan kode, tentukan apa yang akan ditampilkan pada layar:
let a = (-'5') + (-'2');
alert(a);
Tanpa menjalankan kode, tentukan apa yang akan ditampilkan pada layar:
let a = '5' * 1 + '2' * 1;
alert(a);
Tanpa menjalankan kode, tentukan apa yang akan ditampilkan pada layar:
let a = '5' * '1' + '2' * '1';
alert(a);
Tanpa menjalankan kode, tentukan apa yang akan ditampilkan pada layar:
let a = '' + 3 + 1;
alert(a);