Rumah >hujung hadapan web >tutorial js >Pengenalan kepada penukaran jenis nilai dalam petua JavaScript_javascript

Pengenalan kepada penukaran jenis nilai dalam petua JavaScript_javascript

WBOY
WBOYasal
2016-05-16 16:22:46955semak imbas

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). :

Salin kod Kod adalah seperti berikut:

console.log(10 "kucing");//10 kucing
console.log(10 * " kucing");//NaN, " kucing" akan ditukar kepada NaN
console.log(10 "2");//102
console.log(10 - "2");//8
console.log(10 / "2");//5
console.log(10 * "2");//20
console.log(10 * " 2");//20
console.log("10" * "2");//20

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:

Salin kod Kod adalah seperti berikut:

console.log(10 * " 3 ");//30
console.log(10 * "3 m");//NaN, "3 m" akan ditukar kepada NaN

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:

Salin kod Kod adalah seperti berikut:

Nombor("3")//3
Rentetan(false)//"false"
Boolean([])//true

Dalam kebanyakan kes, hasil penukaran jenis eksplisit adalah konsisten dengan hasil penukaran jenis automatik JS tetapi terdapat kes khas: apabila null atau undefined ditukar secara automatik kepada Object, JS akan membuang ralat TypeError tetapi apabila penukaran jenis eksplisit Apabila menukar null atau undefined kepada Object, JS akan mengembalikan objek kosong:
Salin kod Kod adalah seperti berikut:

console.log(Object(undefined));//objek kosong
console.log(Objek(null));//objek kosong

Pada masa yang sama, jika jenis yang ditentukan oleh penukaran eksplisit adalah berbeza daripada jenis yang ditentukan oleh penukaran automatik JS, hasil yang diperoleh juga akan berbeza. Sebagai contoh, hasil undefined==false yang disebut sebelum ini adalah palsu jika jenis penukaran dinyatakan secara eksplisit sebagai Boolean, hasilnya akan menjadi benar:
Salin kod Kod adalah seperti berikut:

console.log(undefined == false);//false
console.log(Boolean(undefined) == Boolean(false));//true

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:

Salin kod Kod adalah seperti berikut:

console.log(false "");//"false"
console.log(false);//0
console.log(!!3);//true
Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn