Jika Anda secara eksplisit mengonversi tipe tertentu ke tipe lain melalui pemanggilan fungsi atau metode, ini disebut konversi eksplisit, dan kebalikannya disebut konversi tipe implisit. Kata "konversi tipe tampilan" dan "konversi tipe implisit" tidak ditemukan di Google dan Wikipedia. Sebut saja begitu.
1. Konversi tipe implisit dalam operasi
1. Operator “+”.
Copy kode kodenya sebagai berikut:
var a = 11, b = '22';
var c = a + b;
Di sini mesin pertama-tama akan mengubah a menjadi string "11" dan kemudian menghubungkannya dengan b, yang menjadi "1122". Beberapa orang mungkin bertanya-tanya, mengapa tidak mengubah b menjadi angka 22 lalu melakukan penjumlahan aritmatika, sehingga c menjadi 33. Tidak ada alasan. Jika salah satu dari dua sisi operator "+" adalah tipe numerik dan sisi lainnya adalah tipe string, mesin js menetapkan untuk melakukan penggabungan string alih-alih penambahan aritmatika. Menggunakan fitur operator "+", Angka dapat dengan mudah diubah menjadi String. menyukai
Copy kode kodenya sebagai berikut:
var a = 11;
alert(tipe a); //-->angka
a = a + '';
peringatan(tipe a); //-->string
2. operator "-".
"-" dapat berupa operator unary (operasi negatif) atau operator biner (operasi pengurangan). menyukai
Copy kode kodenya sebagai berikut:
var a = 11, b = '5';
var c = a - b;
peringatan(tipe c); //--> nomor
Berlawanan dengan tanda "+" di atas, string b secara implisit akan diubah menjadi angka 5 dan kemudian dilakukan pengurangan aritmatika. Dengan menggunakan fitur ini, Anda dapat dengan mudah mengubah String menjadi Angka
Copy kode kodenya sebagai berikut:
var a = '11';
a = a - '';
peringatan(tipe a);// -->angka
2. Konversi tipe implisit dalam pernyataan
1, jika
Copy kode kodenya sebagai berikut:
var obj = {nama:'jack'}
jika(obj){
//lakukan lebih banyak
}
Di sini obj akan dikonversi secara implisit ke tipe Boolean
2. sementara
Copy kode kodenya sebagai berikut:
var obj = {nama:'jack'}
sementara(obj){
//lakukan lebih banyak
}
Sama seperti jika
3. Ketik konversi selama for in
Konversi implisit dari pengidentifikasi ke string terjadi ketika literal objek didefinisikan.
Copy kode kodenya sebagai berikut:
var orang = {'nama':'jack',"umur":20,sekolah:'PKU'};
untuk(var a secara langsung){
peringatan(a + ": " + tipe a);
}
Di sini, tanda kutip tunggal/ganda ditambahkan ke nama dan usia masing-masing untuk menekankan bahwa keduanya bertipe String, dan tanda kutip tunggal/ganda tidak ditambahkan ke sekolah. Kami menelusuri properti objek untuk melihat tipenya. Ditemukan bahwa sekolah juga secara implisit dikonversi ke tipe String.
Indeks array sebenarnya adalah tipe string. Sungguh menakjubkan, tapi itu benar. menyukai
Copy kode kodenya sebagai berikut:
var ary = [1,3,5,7];
untuk(var a di ary){
peringatan(a + ": " + tipe a);
}
3. Konversi tipe implisit saat memperingatkan
Copy kode kodenya sebagai berikut:
String.prototype.fn = function(){kembalikan ini};
var a = 'halo';
alert(typeof a.fn()); //-->objek
peringatan(a.fn()); //-->halo
Metode fn ditambahkan ke prototipe String, yang mengembalikan ini. Kita tahu bahwa ini dapat dipahami sebagai objek instan dari kelas saat ini. Karena ini adalah objek, typeof a.fn() secara alami mengembalikan objek.
Kuncinya adalah peringatan terakhir (a.fn()). Apa yang dikembalikan a.fn() jelas merupakan sebuah objek, tetapi secara implisit diubah menjadi string "halo" untuk ditampilkan.
Hal yang sama terjadi dengan tipe numerik, misalnya
Copy kode kodenya sebagai berikut:
Number.prototype.fn = function(){kembalikan ini};
var a = 10;
alert(typeof a.fn());//-->objek
peringatan(a.fn()); //-->10
a.fn() mengembalikan tipe objek, tetapi secara implisit diubah menjadi angka ketika alert(a.fn()) digunakan.