Mula-mula mari kita bincangkan tentang perbezaan antara null dan undefined:
Melaksanakan jenis pembolehubah yang diisytiharkan tetapi tidak dimulakan dan tidak diisytiharkan akan mengembalikan "tidak ditentukan".
null mewakili penunjuk objek nol, dan jenis operasi akan mengembalikan "objek".
Secara amnya, nilai pembolehubah tidak ditetapkan secara eksplisit kepada tidak ditentukan, tetapi sebaliknya, untuk pembolehubah yang akan menyimpan objek, pembolehubah harus dibenarkan secara eksplisit untuk menyimpan nilai nol.
var bj; alert(bj); //"undefined" bj = null; alert(typeof bj); //"object" alert(bj == null); //true bj = {}; alert(bj == null); //false
Dua fungsi berikut telah diberikan oleh Saudara Senior Deng kepada saya, terima kasih.
/* * 检测对象是否是空对象(不包含任何可读属性)。 * 方法既检测对象本身的属性,也检测从原型继承的属性(因此没有使hasOwnProperty)。 */ function isEmpty(obj) { for (var name in obj) { return false; } return true; };
Objek kosong yang disebut di sini ialah {} atau null saya menulis kes ujian.
var a = {}; a.name = 'realwall'; console.log(isEmpty(a)); //false console.log(isEmpty({})); //true console.log(isEmpty(null)); //true //注意参数为null时无语法错误哦,即虽然不能对null空指针对象添加属性,但可以使用for in 语句 ? /* * 检测对象是否是空对象(不包含任何可读属性)。 * 方法只既检测对象本身的属性,不检测从原型继承的属性。 */ function isOwnEmpty(obj) { for(var name in obj) { if(obj.hasOwnProperty(name)) { return false; } } return true; };
{} dan null:
Perkara ini sangat penting.
var a = {}; var b = null; a.name = 'realwall'; b.name = 'jim'; //这里会报错,b为空指针对象,不能像普通对象一样直接添加属性。 b = a; b.name = 'jim'; //此时 a 和 b 指向同一个对象。a.name, b.name 均为'jam'