Ada enam tipe data umum di js: Tipe string, Tipe Null, Tipe angka, Tipe Boolean, dan Tipe objek.
1. Catatan tentang typeof
Ketika berbicara tentang tipe data, tidak dapat dihindari untuk menyebutkan operator typeof. Yang perlu diperhatikan:
1. typeof adalah operator, bukan metode. Meskipun kita sering menggunakan typeof() untuk mendapatkan tipe data suatu objek.
2. Typeof untuk null adalah objek (ini karena null adalah referensi objek kosong), dan typeof untuk fungsi adalah fungsi.
Copy kode kodenya sebagai berikut:
peringatan(typeof null); //mengembalikan objek
demo fungsi(){
peringatan('demo');
}
alert(typeof demo); //fungsi kembali
2. Tetapkan nilai awal untuk variabel objek dari berbagai tipe data
Perhatikan bahwa jika variabel objek bertipe Object tidak mengetahui apa yang harus ditetapkan pada awalnya, jangan gunakan var demo={};
Copy kode kodenya sebagai berikut:
var d2=nol;
d2={'kunci':"sial"};
var d3='';//String default
var d4=0; //Nilai awal tipe angka disetel ke 0
var d5=null; //Tetapkan nilai default awal untuk tipe objek
3. Perbedaan dan hal yang perlu diperhatikan antara tidak terdefinisi dan nol
1. Jika Anda menggunakan "==" untuk membandingkan, keduanya sama karena membandingkan nilai.
2. Ada dua cara untuk membedakannya (intinya adalah membandingkan tipe datanya)
1) Gunakan typeof untuk membedakannya
2) Gunakan kongruen "===": perbandingannya antara nilai dan tipe data, dan nilai true akan dikembalikan hanya jika semuanya sama.
Copy kode kodenya sebagai berikut:
waspada(tidak terdefinisi == null); //benar
peringatan(tipe tidak terdefinisi == tipe null); //salah
waspada(tidak terdefinisi === null); //benar
4. Catatan tentang Boolean
1. Perbandingan antara benar dan 1 adalah sama, dan perbandingan antara salah dan 0 juga sama (yaitu perbandingan "=="), karena konversi tipe data diimplementasikan secara internal, mengubah benar menjadi 1, dan mengubah salah menjadi 0. Ada banyak data di dalam js Konversi tipe otomatis adalah sesuatu yang harus diperhatikan setiap orang. Masih banyak lagi yang akan disebutkan nanti. Namun penggunaan "===" tidak sama, karena tipe datanya tidak sama.
2. Menampilkan konversi ke Boolean. Gunakan metode Boolean() untuk menampilkan konversi. Yang perlu diperhatikan adalah berbagai tipe data, kapan harus dikonversi ke true dan kapan harus dikonversi ke false.
1) Tipe string, asalkan bukan string kosong, maka akan diubah menjadi true
2) Jenis bilangan, asalkan bukan 0, bilangan negatif sekalipun akan diubah menjadi benar
3) Tipe objek, selama bukan tipe null, akan diubah menjadi true
4) Tipe yang tidak ditentukan akan diubah menjadi salah
Saya tidak akan memberikan demonstrasi, Anda bisa mencobanya sendiri.
3. (***) Fungsi Boolean dipanggil di dalam () pernyataan if().
5. Hal-hal yang perlu diperhatikan tentang tipe Nomor
1. Tipe float tidak dapat melakukan operasi yang tepat.
Copy kode kodenya sebagai berikut:
peringatan(0,1+0,2);//Kembali 0,3000000000000000004
2. Mendukung operasi notasi ilmiah
3. NaN (Bukan Angka)
1) var d=0/0; Catatan: Tidak ada kesalahan yang akan dilaporkan di js, tetapi NaN akan dikembalikan.
2) Dapat diperoleh melalui Number.NaN
3) Operasi apa pun antara NaN dan objek apa pun akan mengembalikan NaN.
4) isNaN() menentukan apakah itu NaN
Copy kode kodenya sebagai berikut:
peringatan(isNaN(NaN));//benar
peringatan(isNaN(12));//salah
alert(isNaN('123'));//false: Karena angka bertipe string dapat otomatis diubah menjadi angka
waspada(isNaN('lew'));//benar
alert(isNaN(false));//(*)false: Karena nilai bool dapat diubah menjadi angka, true menjadi 1, false menjadi 0
5) Prinsip eksekusi internal isNaN(): Hal yang sama berlaku untuk objek. Prinsip implementasi: Perdana menteri memanggil metode valueOf() objek. Jika dapat diubah menjadi angka, maka akan dinilai secara langsung; jika tidak dapat diubah menjadi angka, ia akan memanggil metode toString() lagi, dan kemudian menguji nilai kembaliannya.
valueOf() secara internal memanggil metode toObject() Prinsip eksekusi internal kedua metode tersebut adalah sebagai berikut:
Copy kode kodenya sebagai berikut:
kotak var={
//Ganti metode toString() pada objek kotak
toString:fungsi(){
kembalikan '123';
}
};
waspada(isNaN(kotak));//false
alert(box);//123 Secara internal alert() juga terlebih dahulu memanggil valueOf() objek dan kemudian memanggil metode toString().
6) Ubah tipe data lain menjadi tipe Angka
Berisi tiga fungsi: Number(): dapat mengonversi semua tipe data; parseInt() dan parseFloat() hanya mengonversi string.
Copy kode kodenya sebagai berikut:
peringatan(Nomor('123'));//123
peringatan(Nomor('0234'));//234
peringatan(Nomor(benar));//1
alert(Nomor(null));//(**)0
//Kecuali yang di atas, semuanya mengembalikan NaN.
peringatan(Nomor(tidak ditentukan))//NaN
Prinsip implementasi internal Number(): Sama seperti isNaN(), valueOf() dipanggil terlebih dahulu, lalu toString() dipanggil. . Jadi bisa dibayangkan kinerjanya relatif buruk. . Jadi selama objek yang akan diubah adalah string, panggil parseInt() atau parseFloat() karena mereka tidak perlu menilai tipenya secara internal.
Catatan saat memanggil parseInt() dan parseFloat(): Bagian string yang dimulai dari karakter numerik pertama hingga angka sebelum karakter numerik pertama diubah menjadi angka.
Copy kode kodenya sebagai berikut:
peringatan(parseInt('123leb'));//123
peringatan(parseInt('123leb345'));//123
peringatan(parseInt('len234'));//NaN
Jika parameter di parseInt() bertipe float, hanya bagian bilangan bulat dari angka tersebut yang diperoleh.
Copy kode kodenya sebagai berikut:
peringatan(parseInt(56.12));//56
6. Tipe senar
1) (*Penting*) String tidak dapat diubah dalam ECMAScript: string tidak akan berubah setelah dibuat.
Untuk mengubah variabel string yang telah diberi nilai, pertama-tama hancurkan string dalam variabel tersebut, lalu isi variabel tersebut dengan string yang berisi nilai baru.
Copy kode kodenya sebagai berikut:
var d='halo';
d=d+' shit';//Proses eksekusi: Pertama tetapkan nilai ke 'hello', lalu hapus string di d, gabungkan string 'hello' dan 'shit', lalu berikan nilai ke variabel d. (Jadi nilai string tidak akan berubah setelah dibuat)
2) Metode toString() mengubah tipe data lain menjadi tipe String. Namun jika Anda beroperasi pada null atau tidak terdefinisi, kesalahan akan dilaporkan.
3) Namun, metode String() juga dapat mencapai efek toString(), tetapi dapat beroperasi pada null dan tidak terdefinisi.
Prinsip internal: Panggil toString() terlebih dahulu, dan jika dapat diubah menjadi string, hasilnya akan langsung dikembalikan. Tidak, lalu nilai apakah itu nol atau tidak terdefinisi, lalu kembalikan 'null' atau 'tidak terdefinisi'
Ringkasan: Jika Anda tahu bahwa variabel tidak boleh null atau tidak terdefinisi, gunakan toString(), yang lebih berperforma daripada String(). Karena String() harus membuat penilaian internal, hal ini akan merugikan kinerja.