أولاً ، دعنا نتحدث عن الفرق بين الفارغ وغير المحدد:
تنفيذ typeof على المتغيرات المعلنة ولكن غير المعلنة وغير المعلنة ، كلاهما يعود "غير محدد".
يعني NULL مؤشر كائن فارغ ، وستعود عملية typeof "كائن".
بشكل عام ، لا يتم تعيين قيمة المتغير بشكل صريح على غير محدد ، ولكن لاغية على العكس ، للمتغير الذي هو على وشك حفظ الكائن ، يجب السماح للمتغير بوضوح بحفظ القيمة الفارغة.
var bj ؛ Alert (BJ) ؛ // "غير محدد" bj = null ؛ Alert (typeof bj) ؛ // "كائن" تنبيه (bj == null) ؛ // trueBJ = {} ؛ Alert (bj == null) ؛ //خطأ شنيعأعطيت لي وظيفتان التاليتان لي من قبل الأخ الأكبر دنغ ، شكرًا لك.
/** اكتشف ما إذا كان الكائن هو كائن فارغ (بدون أي خصائص قابلة للقراءة). * تكتشف الطريقة كل من خصائص الكائن نفسه والخصائص الموروثة من النموذج الأولي (بحيث لم تصنع hasownproperty). */function isempty (obj) {for (var name in obj) {return false ؛} return true ؛} ؛هل الكائن الفارغ المذكور هنا {} أو فارغ؟ كتبت قضية اختبار.
var a = {} ؛ a.name = 'RealWall' ؛ console.log (isempty (a)) ؛ //falseconsole.log (isempty ({})) ؛ //trueconsole.log(isempty(null)) ؛ // true // لاحظ أنه لا يوجد خطأ في بناء الجملة عندما تكون المعلمة خالية ، أي على الرغم من أنه لا يمكنك إضافة سمات إلى مؤشر فارغ فارغ ، يمكنك استخدام IN في العبارة؟/** لاكتشاف ما إذا كان الكائن كائن فارغ (لا يحتوي على أي سمات قابلة للقراءة). * الطريقة تكتشف فقط خصائص الكائن نفسه ، ولا تكتشف الخصائص الموروثة من النموذج الأولي. */الوظيفة isOwnEmpty (obj) {for (var name in obj) {if (obj.hasownproperty (name)) {return false ؛}} return true ؛} ؛الفرق بين {} و null:
هذا الشيء مهم جدا.
var a = {} ؛ var b = null ؛ a.name = 'RealWall' ؛ B.Name = 'Jim' ؛ // سيتم الإبلاغ عن خطأ هنا. B هو مؤشر فارغ للصورة ، ولا يمكن إضافة سمات مباشرة مثل الكائنات العادية. b = a ؛ b.name = 'jim' ؛ // A و B يشيران إلى نفس الكائن في هذا الوقت. A.Name ، B.Name كلها "مربى"