8.21 Optional chaining and Nullish Coalescing Operator
Â
Optional chaining
āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāϰāĻŖ āĻĻāĻŋā§ā§ āĻļā§āϰ⧠āĻāϰāĻž āϝāĻžāĻāĨ¤
Â
āĻāĻŽāϰāĻž āϝāĻāύāĻŋ āĻāĻāĻāĻŋ 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 āĻāϰ⧠āύāĻŋāϤ⧠āĻĒāĻžāϰāĻŋāĨ¤
āϤāĻŦā§ main object āĻāϰ āĻā§āώā§āϤā§āϰ⧠āĻāĻāĻŋ āĻĒā§āϰāϝā§āĻā§āϝ āύā§.
āϝā§āĻŽāύ :studentXyz?.address āĻā§ access āĻāϰāϤ⧠āĻāĻžāĻāϞ⧠āϏ⧠āĻāĻāĻāĻŋ ReferenceError āĻĻāĻŋāĻŦā§āĨ¤
āĻāĻāĻāĻāĻžāĻŦā§ array āĻāϰ āĻā§āώā§āϤā§āϰā§āĻ āĻāĻŽāϰāĻž array āĻāϰ property āĻāϰ validity check āĻāϰāϤ⧠āĻĒāĻžāϰāĻŋāĨ¤
Example :
Nullish coalescing operator
Nullish coalescing operator āĻāĻŽāύ āĻāĻāĻāĻŋ operator, āϝāĻž left-hand side āĻ null āĻāĻŋāĻāĻŦāĻž undefined āĻĨāĻžāĻāϞ⧠right-hand side āĻā§ return āĻāϰ⧠āĻ āύā§āϝāĻĨāĻžā§ āϏ⧠āϤāĻžāϰ left-hand side operand āĻā§ return āĻāϰā§āĨ¤
Â
- 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…”);
- āĻāϞā§āϞāĻŋāĻāĻŋāϤ āĻā§āĻĄāĻāĻŋāϰ āĻāĻāĻāĻĒā§āĻāĻā§āϞ⧠āĻŦā§āϰ āĻāϰāĨ¤