เมื่อเร็ว ๆ นี้โครงการพบปัญหาในการตัดสินวัตถุเปล่า โปรดตรวจสอบข้อมูลที่เกี่ยวข้องและสรุป
การตัดสินวัตถุที่ว่างเปล่านั้นไม่เหมือนกับการตัดสินสตริงที่ว่างเปล่าอีกต่อไปเนื่องจากวัตถุเปล่าเป็นวัตถุและต้องจัดสรรหน่วยความจำแยกต่างหากแทนที่จะว่างเปล่าเหมือนสตริงมันเป็นหม้อขนาดใหญ่ ทุกคนเท่าเทียมกันดังนี้:
ดังที่แสดงในรหัสด้านบนจะพบได้ว่าไม่ว่าจะเป็นวัตถุที่ว่างเปล่าที่สร้างขึ้นผ่านตัวอักษรของวัตถุหรือวัตถุว่างที่สร้างขึ้นผ่านตัวสร้างวัตถุมันไม่เท่ากับกันและกัน
1. แปลงวัตถุเป็นสตริงเพื่อเปรียบเทียบ
ไม่แนะนำวิธีนี้ แต่เป็นวิธีที่ง่ายที่สุดในการคิด ส่วนใหญ่ใช้ json.stringify () เพื่อบังคับวัตถุ มันถูกโพสต์เพื่อดู:
var a = {}; var b = วัตถุใหม่ (); console.log ("ผลการเปรียบเทียบของตัวอักษรวัตถุ:"+(json.stringify (a) == "{}")) console.log ("ผลการเปรียบเทียบของตัวสร้าง:"+(json.stringify (b) == "}"เราสามารถเข้าใจได้ว่าการเปรียบเทียบระหว่างวัตถุเปล่าสองชิ้นที่แปลงเป็นสตริงนั้นเป็นจริงซึ่งสามารถแก้ปัญหานี้ได้ แต่ไม่แนะนำ มาพูดถึงวิธีที่สองด้านล่าง
2. สำหรับในลูป
ใช้ A for in loop เพื่อวนซ้ำผ่านแอตทริบิวต์ทั้งหมดเพื่อตรวจสอบว่าวัตถุนั้นเป็นวัตถุที่ว่างเปล่า:
var a = {}; var b = วัตถุใหม่ (); ฟังก์ชั่น isemptyObject (obj) {สำหรับ (คีย์ var ใน obj) {return false}; ส่งคืน true}; if (isempthyObject (a)) {alert ("A คือวัตถุเปล่า")} ถ้า (isemptyObject (b)) {alert ("B เป็นวัตถุว่าง")}ใช้ For In Loop เพื่อลูปวัตถุเมื่อวนลูปและตัวห้อยวนลูปที่สอดคล้องกันเมื่อวนลูปอาร์เรย์เช่น:
var b = ["hello", "my", "world"] สำหรับ (ดัชนี var ใน b) {console.log (b [index]);} // สวัสดีโลกของฉันข้างต้นเป็นเนื้อหาทั้งหมด (ชื่อ) ที่นำเสนอโดยบรรณาธิการ ฉันหวังว่าคุณจะสนับสนุน wulin.com เพิ่มเติม ~