Penukaran Jenis Data Automatik
Seperti yang anda sudah tahu, tali dalam JavaScript patut diletakkan dalam tanda petik. Mungkin berlaku, bahawa semua aksara tali akan terdiri daripada digit:
let a = '123';
Dalam kes ini, pembolehubah a juga merupakan
tali, tetapi dengan beberapa nuansa.
Inti nuansa adalah seperti berikut: jika operasi matematik dilakukan pada tali dengan digit - operasi ini akan dilaksanakan seolah-olah kita memang mempunyai nombor, bukan tali:
alert('2' * '3'); // akan memaparkan 6
Dalam kes ini, JavaScript melihat bahawa kita cuba melaksanakan operasi yang tidak dibenarkan untuk tali, tetapi dibenarkan untuk nombor.
Ia juga melihat, bahawa secara faktual tali kita - adalah nombor dalam tanda petik. Oleh itu, JavaScript secara automatik melakukan penukaran tali ini kepada nombor dan melaksanakan operasi matematik yang sepadan ke atasnya.
Ini berfungsi, jika dalam tali kita hanya
terdapat digit. Jika terdapat sekurang-kurangnya satu huruf
- JavaScript akan menganggap operasi itu tidak betul
dan menjadikan hasilnya nilai NaN:
alert('2' * '3s'); // akan memaparkan NaN
Selain itu, penukaran automatik berlaku, jika operasi adalah betul secara matematik, tetapi tidak dibenarkan untuk tali.
Sebagai contoh, tali tidak boleh (tetapi nombor boleh) didarab, dibahagi, ditolak, oleh itu dalam semua operasi sedemikian akan berlaku penukaran automatik tali dengan digit kepada nombor.
Walau bagaimanapun, tali, seperti nombor, ditambah
menggunakan operator +. Ini bermaksud,
bahawa dalam kes penambahan penukaran automatik
tidak akan berlaku:
let a = '1' + '2';
alert(a); // akan memaparkan '12' - telah berlaku penambahan tali
Jika satu daripada sebutan adalah nombor, dan yang lain - tali, maka tali sentiasa menang:
let a = 1 + '2';
alert(a); // akan memaparkan '12'
Dalam kes sedemikian, JavaScript, sebaliknya, secara automatik menukar nombor kepada tali dan melaksanakan penambahan tali.
Terdapat, bagaimanapun, nuansa, apabila terdapat lebih banyak sebutan, daripada dua: dalam kes ini, penukaran kepada jenis tertentu bergantung pada susunan pelaksanaan operasi.
Dalam contoh berikut, pertama 2 dan 3
akan ditambah sebagai nombor, dan kemudian hasilnya akan ditambah
kepada tali '1' sudah sebagai tali '5',
yang akhirnya akan memberikan tali '15':
let a = '1' + (2 + 3);
alert(a); // akan memaparkan '15'
Jika kurungan dikeluarkan, semuanya akan ditambah
dari kiri ke kanan. Iaitu, pertama kepada tali '1'
akan ditambah nombor 2 dan hasilnya
akan menjadi tali '12'. Kemudian kepada
tali ini akan ditambah nombor 3 dan hasilnya
akan menjadi tali '123':
let a = '1' + 2 + 3;
alert(a); // akan memaparkan '123'
Tetapi dalam contoh berikut, nombor 2
dan 3 ditulis pada awalnya, oleh itu pertama
mereka akan ditambah sebagai nombor, memberikan hasil
nombor 5, dan kemudian kepada nombor ini akan ditambah
tali '1', memberikan akhirnya tali '51':
let a = 2 + 3 + '1';
alert(a); // akan memaparkan '51'
Tanpa menjalankan kod, tentukan, apa yang akan dipaparkan pada skrin:
let a = '5' + '2';
alert(a);
Tanpa menjalankan kod, tentukan, apa yang akan dipaparkan pada skrin:
let a = '5' + 2;
alert(a);
Tanpa menjalankan kod, tentukan, apa yang akan dipaparkan pada skrin:
let a = 5 + '2';
alert(a);
Tanpa menjalankan kod, tentukan, apa yang akan dipaparkan pada skrin:
let a = 5 + 2;
alert(a);
Tanpa menjalankan kod, tentukan, apa yang akan dipaparkan pada skrin:
let a = '5' * '2';
alert(a);
Tanpa menjalankan kod, tentukan, apa yang akan dipaparkan pada skrin:
let a = '5' - '2';
alert(a);
Tanpa menjalankan kod, tentukan, apa yang akan dipaparkan pada skrin:
let a = '5' / '2';
alert(a);
Tanpa menjalankan kod, tentukan, apa yang akan dipaparkan pada skrin:
let a = '5' % '2';
alert(a);
Tanpa menjalankan kod, tentukan, apa yang akan dipaparkan pada skrin:
let a = '5s' * '2';
alert(a);
Tanpa menjalankan kod, tentukan, apa yang akan dipaparkan pada skrin:
let a = '5s' + '2';
alert(a);
Tanpa menjalankan kod, tentukan, apa yang akan dipaparkan pada skrin:
let a = (-'5') + (-'2');
alert(a);
Tanpa menjalankan kod, tentukan, apa yang akan dipaparkan pada skrin:
let a = '5' * 1 + '2' * 1;
alert(a);
Tanpa menjalankan kod, tentukan, apa yang akan dipaparkan pada skrin:
let a = '5' * '1' + '2' * '1';
alert(a);
Tanpa menjalankan kod, tentukan, apa yang akan dipaparkan pada skrin:
let a = '' + 3 + 1;
alert(a);