Rumah > Artikel > hujung hadapan web > Pengenalan kepada perbezaan antara null dan undefined dalam kemahiran JavaScript_javascript
Terdapat dua nilai istimewa dalam JavaScript yang mewakili ketiadaan maklumat: null dan undefined. Secara peribadi, saya rasa perbezaan antara dua nilai istimewa ini boleh difahami dari perspektif berikut:
1.null mewakili bekas yang menyimpan maklumat (seperti pembolehubah yang telah diberikan nilai sebelum ini), tetapi kandungan dalam bekas itu kosong.
2. undefined bermaksud tiada bekas untuk menyimpan maklumat.
Nol dalam JavaScript tidak berbeza daripada null dalam kebanyakan bahasa pengaturcaraan lain Ia pada asasnya digunakan untuk menunjukkan bahawa nilai maklumat kosong dalam JavaScript, ungkapan itu mengembalikan hasil yang tidak ditentukan dalam situasi berikut:
1. Pembolehubah yang tidak pernah diberikan nilai.
2. Akses nilai sifat yang tidak wujud dalam objek.
3. Akses ahli yang tidak wujud dalam tatasusunan.
4. Panggil fungsi tanpa penyataan pulangan.
5. Panggil fungsi yang pernyataan pemulangannya kosong ("return;").
Malah, seperti Infinity dan NaN, undefined ialah pembolehubah global dalam JavaScript dan malah boleh diberikan nilai lain dalam ECMAScript 3. ECMAScript 5 membetulkan ralat ini dan membuat pembolehubah tidak ditentukan baca sahaja.
Untuk perbandingan antara null dan undefined, anda boleh menggunakan operator kongruen ===. Jika anda menggunakan operator == biasa, null dan undefined adalah bersamaan:
Semasa pengaturcaraan, jika anda perlu menetapkan nilai nol kepada pembolehubah, anda biasanya menggunakan null dan bukannya undefined. Sebabnya ialah:
1. undefined secara amnya dianggap sebagai kekurangan maklumat di peringkat sistem dan peringkat pelaporan ralat.
2. Null secara amnya dianggap sebagai nilai maklumat kosong pada tahap pengaturcaraan dan tahap operasi logik.
Jika penukaran jenis terlibat dalam program, maka apabila menukar kepada jenis nombor, keputusan null dan undefined adalah berbeza:
1. Hasil penukaran undefined kepada nombor ialah NaN.
2. Hasil penukaran nol kepada nombor ialah 0.
Perlu dinyatakan bahawa hasil penukaran rentetan kosong dan tatasusunan kosong kepada nombor juga adalah 0.
Mengenai sebab dua nilai yang mewakili "tiada" direka dalam JavaScript, sila rujuk pada catatan blog Ruan Yifeng.
Percubaan
Dalam kod percubaan berikut, hasil ungkapan semuanya tidak ditentukan:
fungsi Sampel(x){
ini.x = x;
}
var s = new Sample();
console.log(s.x)
console.log(s.notExistVariable);
var n = [2,3,4];
console.log(n[8]);
ujian fungsi(){
//tiada nilai pulangan untuk fungsi ini
}
console.log(test());
ujian fungsi2(){
kembali;
}
console.log(test2());