Apabila melakukan operasi seperti -, *, /, ==, != dalam JavaScript, jika jenis nilai di sebelah kiri dan kanan operator tidak konsisten dengan jenis yang dijangkakan, JavaScript akan menukar nilai pada kedua-dua belah operator ke dalam jenis yang dijangkakan Lakukan operasi sekali lagi. Apabila jenis nilai yang dijangkakan ialah rentetan, JavaScript akan menukar nilai kepada rentetan apabila jenis nilai yang dijangkakan ialah nombor, JavaScript akan menukar nilai kepada nombor (jika ia tidak boleh ditukar kepada nilai berangka, NaN akan dikembalikan). :
Peraturan penukaran jenis nilai
Untuk peraturan penukaran nilai dalam JavaScript, sila rujuk Jadual 3-2 penukaran jenis JavaScript dalam buku "JavaScript – The Definitive Guide". Beberapa tempat yang lebih penting ialah:
1 Hasilnya selepas undefined ditukar kepada nombor ialah NaN.
2. Hasil penukaran nol kepada nombor ialah 0.
3. Hasil penukaran rentetan kosong "" kepada nombor ialah 0.
4. Keputusan selepas menukar -0 kepada rentetan ialah "0".
5. Hasil penukaran tatasusunan kosong [] kepada nombor ialah 0.
6. Apabila tatasusunan dengan hanya satu ahli nombor (seperti [9]) ditukar kepada nombor, hasilnya ialah nilai nombor (9).
Apabila JavaScript menukar rentetan kepada nombor, terdapat dua peraturan yang menarik:
1. JavaScript akan memadamkan aksara kosong pada permulaan dan penghujung rentetan sebelum menukarnya, jadi rentetan seperti "42" boleh berjaya ditukar kepada nombor 42.
2. Selepas mengalih keluar aksara kosong pada permulaan dan akhir, jika rentetan masih mengandungi aksara bukan angka, rentetan akan ditukar kepada NaN. Contohnya: "3 m" akan ditukar kepada NaN.
Contoh:
Penukaran jenis nilai dan perbandingan
Dalam JavaScript, penggunaan operator yang sama (==) melibatkan penukaran jenis nilai: jika jenis nilai pada kedua-dua belah operator == tidak konsisten, maka JS akan menukarnya kepada jenis yang konsisten sebelum membuat pertimbangan. Perlu diingatkan bahawa dua nilai jenis yang berbeza mungkin bersamaan selepas penukaran jenis, tetapi ini tidak bermakna bahawa keputusan menggunakan operator == pada mereka mestilah benar. Contoh mudah ialah undefined dan false: selepas menukar undefined kepada jenis boolean, hasilnya adalah palsu, tetapi sebenarnya hasil undefined==false adalah palsu.
Penukaran jenis eksplisit
Menggunakan penukaran jenis automatik JavaScript adalah sangat mudah, tetapi ia juga boleh menyebabkan masalah dengan mudah seperti kebolehselenggaraan kod. Untuk menjadikan kod program lebih jelas dan mengurangkan kekaburan, penukaran jenis eksplisit kadangkala digunakan dalam program JS:
Penggunaan penukaran jenis automatik
Dalam JS, anda boleh menggunakan penukaran automatik jenis nilai dan menggunakan operator untuk mencapai kesan yang sama seperti penukaran eksplisit, seperti: