Pertama, mari kita bicara tentang perbedaan antara nol dan tidak terdefinisi:
Jalankan tipe dari variabel yang dinyatakan tetapi tidak diinisialisasi dan tidak dideklarasikan, keduanya mengembalikan "tidak terdefinisi".
NULL berarti penunjuk objek kosong, dan operasi TypeOf akan mengembalikan "Objek".
Secara umum, nilai suatu variabel tidak secara eksplisit diatur ke tidak terdefinisi, tetapi nol sebaliknya, untuk variabel yang akan menyimpan objek, variabel harus secara eksplisit diizinkan untuk menyimpan nilai nol.
var bj; alert (bj); // "tidak terdefinisi" bj = null; peringatan (tipe BJ); // peringatan "objek" (bj == null); // truebj = {}; alert (bj == null); //PALSUDua fungsi berikut diberikan kepada saya oleh saudara laki -laki senior Deng, terima kasih.
/** Deteksi apakah objek tersebut merupakan objek kosong (tanpa properti yang dapat dibaca). * Metode ini mendeteksi kedua sifat objek itu sendiri dan sifat -sifat yang diwarisi dari prototipe (sehingga belum membuat HasownProperty). */function isEmpty (obj) {for (nama var di obj) {return false;} return true;};Apakah objek kosong disebutkan di sini {} atau null? Saya menulis test case.
var a = {}; a.name = 'realWall'; console.log (isempty (a)); //falseconsole.log (isempty ({})); //trueconsole.log(isempty(null)); // Benar // Perhatikan bahwa tidak ada kesalahan sintaks ketika parameternya nol, yaitu, meskipun Anda tidak dapat menambahkan atribut ke pointer nol null, Anda dapat menggunakan pernyataan untuk dalam pernyataan?/** untuk mendeteksi apakah objek tersebut adalah objek kosong (tidak berisi atribut yang dapat dibaca). * Metode hanya mendeteksi sifat -sifat objek itu sendiri, dan tidak mendeteksi sifat yang diwarisi dari prototipe. */function isOwnempty (obj) {for (nama var di obj) {if (obj.hasownproperty (name)) {return false;}} return true;};Perbedaan antara {} dan null:
Hal ini sangat penting.
var a = {}; var b = null; a.name = 'realWall'; b.name = 'jim'; // Kesalahan akan dilaporkan di sini. B adalah penunjuk nol untuk suatu gambar, dan atribut tidak dapat ditambahkan secara langsung seperti objek biasa. b = a; b.name = 'jim'; // A dan B menunjuk ke objek yang sama saat ini. a.name, b.name semuanya 'selai'