Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

ไวยากรณ์แปลก ๆ `?.` หมายถึงอะไรใน JavaScript?


ลองทำความเข้าใจกับ '?.' ด้วยตัวอย่าง

พิจารณาตัวอย่างวัตถุต่อไปนี้ที่อธิบายมนุษย์เพศชายอายุ 23 -

const being = {
   human: {
      male: {
         age: 23
      }
   }
};

สมมติว่าเราต้องการเข้าถึงคุณสมบัติอายุของวัตถุที่กำลังเป็นอยู่ ค่อนข้างง่ายใช่มั้ย? เราจะใช้การโยงเพื่อเข้าถึงเหมือนโค้ดด้านล่าง -

ตัวอย่าง

const being = {
   human: {
      male: {
         age: 23
      }
   }
};
console.log(being.human.male.age);

ผลลัพธ์

เอาต์พุตคอนโซลมีดังนี้ -

23

สมมติว่าคุณเปลี่ยนคุณสมบัติชายของการเป็นปฏิปักษ์กับผู้หญิงหรืออย่างอื่นด้วยเหตุผลทางเทคนิคบางอย่าง

ตอนนี้เกิดอะไรขึ้นกับคำสั่ง chaining ของเรา มันจะให้ typeError โดยบอกว่าไม่สามารถเข้าถึงคุณสมบัติที่ไม่ได้กำหนดไว้ของมนุษย์ มีวิธีใดบ้างในสถานการณ์ดังกล่าวที่จะทำให้โค้ดของเราไม่ทำให้เกิดข้อผิดพลาดใดๆ ใช่ และนี่คือที่ที่ '?.' หรือที่เรียกว่าการต่อสายโซ่เข้ามาช่วยเรา

การโยงที่เป็นทางเลือกนั้นค่อนข้างง่าย มันทำงานเหมือนกับการโยงแบบปกติในสภาวะปกติ แต่เมื่อเราพยายามเข้าถึงคุณสมบัติใด ๆ ที่ไม่ได้กำหนดไว้ แทนที่จะสร้างโค้ดของเราให้เกิดข้อผิดพลาด มันจะยุติการโยงจากนั้นและตรงนั้นและส่งคืนที่ไม่ได้กำหนด ดังนั้นส่วนที่เหลือของ โค้ดใช้งานได้ปกติ

ลองพิจารณาตัวอย่างสุดท้ายของเรา (การโยงทางเลือก) -

ตัวอย่าง

const being = {
   human: {
      male: {
         age: 23
      }
   }
}
console.log(being?.human?.female?.age);

ผลลัพธ์

แทนที่จะโยนข้อผิดพลาด ผลลัพธ์จะเป็น −

undefined