8.21 Optional chaining and Nullish Coalescing Operator

 

Optional chaining

āĻāĻ•āϟāĻŋ āωāĻĻāĻžāĻšāϰāĻŖ āĻĻāĻŋā§Ÿā§‡ āĻļ⧁āϰ⧁ āĻ•āϰāĻž āϝāĻžāĻ•āĨ¤

 
 
 
let student = {
name: “Rifat”,
age: 10,
class: “9”,
roll: 2,
hometown: “Dhaka”,
};
 

 

āφāĻŽāϰāĻž āϝāĻ–āύāĻŋ āĻāĻ•āϟāĻŋ object āĻāϰ āϕ⧋āύ property/properties access āĻ•āϰāϤ⧇ āϝāĻžāχ āϤāĻ–āύ āϤāĻžāϕ⧇ “.” symbol āĻĻā§āĻŦāĻžāϰāĻž access āĻ•āϰ⧇ āĻāĻ•āϟāĻŋ chain create āĻ•āϰāĻŋāĨ¤
āϝ⧇āĻŽāύ : student.name āĻŦāĻž student.age .
āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻāχ chain āϟāĻŋ valid āĻ•āĻŋāύāĻž āϤāĻž check āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ Optional chaining use āĻ•āϰ⧇ āϖ⧁āĻŦ āϏāĻšāĻœā§‡āχ āϤāĻž āĻŦ⧇āϰ āĻ•āϰ⧇ āĻĢ⧇āϞāϤ⧇ āĻĒāĻžāϰāĻŋ /
āφāĻŽāϰāĻž āĻāĻ–āύ student.school āϕ⧇ access āĻ•āϰāϤ⧇ āϝāĻžāχ, āϤāĻŦ⧇ javascript āφāĻŽāĻžāĻĻ⧇āϰ āĻāĻ•āϟāĻŋ undefined show āĻ•āϰāĻŦ⧇ āĻāĻŦāĻ‚ āĻŦāϞāĻŦ⧇ āϝ⧇, āφāĻŽāϰāĻž āĻāχ student āύāĻžāĻŽāĻ• object āϟāĻŋāϰ school āύāĻžāĻŽāĻ• āϝ⧇ property āϟāĻŋ access āĻ•āϰāϤ⧇ āϚāĻžāĻšā§āĻ›āĻŋ, āϤāĻž student āύāĻžāĻŽāĻ• object āϟāĻŋāϰ āĻŽāĻžāĻā§‡ āύ⧇āχ.
āϤāĻžāχ āĻāĻ•āϟāĻŋ property āϕ⧋āύ object āĻ belong āĻ•āϰ⧇ āĻ•āĻŋ āύāĻž, āĻāĻŦāĻ‚ āϝāĻĻāĻŋ āϏ⧇āχ āĻĒā§āϰāĻĒāĻžāĻ°ā§āϟāĻŋ āϟāĻŋ object āĻ belong āĻ•āϰ⧇ āϤāĻž Optional chaining āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ check āĻ•āϰ⧇ āύāĻŋāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤

 
 
 
// with Optional chaining
console.log(student?.address);
// without Optional chaining
console.log(student.address);
 

āϤāĻŦ⧇ main object āĻāϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻāϟāĻŋ āĻĒā§āϰāϝ⧋āĻœā§āϝ āύ⧟.
āϝ⧇āĻŽāύ :studentXyz?.address āϕ⧇ access āĻ•āϰāϤ⧇ āϚāĻžāχāϞ⧇ āϏ⧇ āĻāĻ•āϟāĻŋ ReferenceError āĻĻāĻŋāĻŦ⧇āĨ¤

āĻāĻ•āχāĻ­āĻžāĻŦ⧇ array āĻāϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇āĻ“ āφāĻŽāϰāĻž array āĻāϰ property āĻāϰ validity check āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤
Example :

 
 
 
let numbers = [“1”, “2”];
console.log(numbers?.[2]);
 

Nullish coalescing operator

Nullish coalescing operator āĻāĻŽāύ āĻāĻ•āϟāĻŋ operator, āϝāĻž left-hand side āĻ null āĻ•āĻŋāĻ‚āĻŦāĻž undefined āĻĨāĻžāĻ•āϞ⧇ right-hand side āϕ⧇ return āĻ•āϰ⧇ āĻ…āĻ¨ā§āϝāĻĨāĻžā§Ÿ āϏ⧇ āϤāĻžāϰ left-hand side operand āϕ⧇ return āĻ•āϰ⧇āĨ¤

 
 
 
const a = null;
console.log(a ?? “right”);
//output : right
let b = 10;
console.log(b ?? “left”);
//output : 10
 

 

  • let student = {
    id: 0,
    registration_no: 10102019,
    age: 7,
    class: “Standart 1”,
    Hometown: “Mymensingh”,
    };
     
    • āωāĻĻāĻžāĻšāϰāĻŖ- ā§§
     
     
     
    console.log(student.registration_no); // 10102019
     
    • āωāĻĻāĻžāĻšāϰāĻŖ- ⧍
     
     
     
    console.log(student?.registration_no); //10102019
     
    • āωāĻĻāĻžāĻšāϰāĻŖ- ā§Š
     
     
     
    console.log(student?.age ?? “Humm…”); // 7
     
    • āωāĻĻāĻžāĻšāϰāĻŖ- ā§Ē
     
     
     
    console.log(student?.father ?? “Humm…”); //Humm..
     
    • āωāĻĻāĻžāĻšāϰāĻŖ- ā§Ģ
     
     
     
    console.log(teacher?.has_pocket); //aa.js:13 Uncaught ReferenceError: teacher is not defined
  • let shirtData = {
    id: 0,
    product_id: “##321ssl”,
    size: “XL”,
    color: “red”,
    has_pocket: false,
    };
    console.log(shirtData.product_id);
    console.log(shirtData?.product_id);
    console.log(shirtData?.color);
    console.log(shirtData.has_button);
    console.log(shirtData?.has_button);
    console.log(shirtData?.has_button ?? “Humm…”);
    console.log(shirtData?.has_pocket ?? “Humm…”);
    console.log(shirt.has_pocket ?? “Humm…”);
    console.log(shirt?.has_pocket ?? “Humm…”);
  • āωāĻ˛ā§āϞāĻŋāĻ–āĻŋāϤ āϕ⧋āĻĄāϟāĻŋāϰ āφāωāϟāĻĒ⧁āϟāϗ⧁āϞ⧋ āĻŦ⧇āϰ āĻ•āϰāĨ¤