ลองทำความเข้าใจกับ '?.' ด้วยตัวอย่าง
พิจารณาตัวอย่างวัตถุต่อไปนี้ที่อธิบายมนุษย์เพศชายอายุ 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