ದೃಢವಾದ ಮತ್ತು ಡೈನಾಮಿಕ್ ಪ್ರಾಪರ್ಟಿ ಆಕ್ಸೆಸ್ಗಾಗಿ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ನ ಐಚ್ಛಿಕ ಸರಪಳಿ (?.) ಮತ್ತು ಬ್ರಾಕೆಟ್ ಸೂಚನೆಯನ್ನು ಕರಗತ ಮಾಡಿಕೊಳ್ಳಿ. ಪ್ರಾಯೋಗಿಕ ಉದಾಹರಣೆಗಳು ಮತ್ತು ಉತ್ತಮ ಅಭ್ಯಾಸಗಳೊಂದಿಗೆ ತಿಳಿಯಿರಿ.
ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಐಚ್ಛಿಕ ಸರಪಳಿ ಮತ್ತು ಬ್ರಾಕೆಟ್ ಸೂಚನೆ: ಡೈನಾಮಿಕ್ ಪ್ರಾಪರ್ಟಿ ಆಕ್ಸೆಸ್ ಡೀಮಿಸ್ಟಿಫೈಡ್
ಆಧುನಿಕ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಡೆವಲಪ್ಮೆಂಟ್ನಲ್ಲಿ, ಸಂಕೀರ್ಣ ಡೇಟಾ ರಚನೆಗಳನ್ನು ನ್ಯಾವಿಗೇಟ್ ಮಾಡುವುದು ಸಾಮಾನ್ಯ ಕಾರ್ಯವಾಗಿದೆ. ಆಗಾಗ್ಗೆ, ನೀವು ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲದಿರುವ ಗುಣಲಕ್ಷಣಗಳನ್ನು ಪ್ರವೇಶಿಸಬೇಕಾಗುತ್ತದೆ, ಇದು ದೋಷಗಳು ಮತ್ತು ಅನಿರೀಕ್ಷಿತ ನಡವಳಿಕೆಗೆ ಕಾರಣವಾಗುತ್ತದೆ. ಅದೃಷ್ಟವಶಾತ್, ಈ ಸಂದರ್ಭಗಳನ್ನು ಸಲೀಸಾಗಿ ನಿಭಾಯಿಸಲು ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಐಚ್ಛಿಕ ಸರಪಳಿ (?.) ಮತ್ತು ಬ್ರಾಕೆಟ್ ಸೂಚನೆಯಂತಹ ಪ್ರಬಲ ಸಾಧನಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ. ಈ ಸಮಗ್ರ ಮಾರ್ಗದರ್ಶಿ ಈ ವೈಶಿಷ್ಟ್ಯಗಳು, ಅವುಗಳ ಪ್ರಯೋಜನಗಳು ಮತ್ತು ನಿಮ್ಮ ಕೋಡ್ನ ದೃಢತೆ ಮತ್ತು ನಿರ್ವಹಣೆಯನ್ನು ಸುಧಾರಿಸಲು ಪ್ರಾಯೋಗಿಕ ಅನ್ವಯಿಕೆಗಳನ್ನು ಅನ್ವೇಷಿಸುತ್ತದೆ.
ಐಚ್ಛಿಕ ಸರಪಳಿಯನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು (?.)
ಪ್ರತಿಯೊಂದು ಹಂತದ ಅಸ್ತಿತ್ವವನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ಪರಿಶೀಲಿಸದೆ ನೆಸ್ಟೆಡ್ ಆಬ್ಜೆಕ್ಟ್ ಪ್ರಾಪರ್ಟಿಗಳನ್ನು ಪ್ರವೇಶಿಸಲು ಐಚ್ಛಿಕ ಸರಪಳಿಯು ಒಂದು ಸಂಕ್ಷಿಪ್ತ ಮಾರ್ಗವಾಗಿದೆ. ಸರಪಳಿಯಲ್ಲಿನ ಆಸ್ತಿಯು ನಲ್ಲಿಶ್ ಆಗಿದ್ದರೆ (null ಅಥವಾ undefined), ಅಭಿವ್ಯಕ್ತಿ ಶಾರ್ಟ್-ಸರ್ಕ್ಯೂಟ್ ಆಗುತ್ತದೆ ಮತ್ತು ದೋಷವನ್ನು ಎಸೆಯುವ ಬದಲು undefined ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ. ಸಂಭಾವ್ಯವಾಗಿ ಕಾಣೆಯಾದ ಡೇಟಾವನ್ನು ವ್ಯವಹರಿಸುವಾಗ ಇದು ನಿಮ್ಮ ಕೋಡ್ ಅನ್ನು ಕ್ರ್ಯಾಶ್ ಮಾಡುವುದನ್ನು ತಡೆಯುತ್ತದೆ.
ಮೂಲ ಸಿಂಟ್ಯಾಕ್ಸ್
ಐಚ್ಛಿಕ ಸರಪಳಿ ಆಪರೇಟರ್ ಅನ್ನು ?. ಪ್ರತಿನಿಧಿಸುತ್ತದೆ. ಆಸ್ತಿಯ ಹೆಸರಿನ ನಂತರ ಆಸ್ತಿ ಪ್ರವೇಶವನ್ನು ಷರತ್ತುಬದ್ಧವಾಗಿ ನಿರ್ವಹಿಸಬೇಕು ಎಂದು ಸೂಚಿಸಲು ಇದನ್ನು ಇರಿಸಲಾಗುತ್ತದೆ.
ಉದಾಹರಣೆ:
const user = {
profile: {
address: {
city: 'London'
}
}
};
// ಐಚ್ಛಿಕ ಸರಪಳಿ ಇಲ್ಲದೆ:
let city;
if (user && user.profile && user.profile.address) {
city = user.profile.address.city;
}
console.log(city); // ಔಟ್ಪುಟ್: ಲಂಡನ್
// ಐಚ್ಛಿಕ ಸರಪಳಿಯೊಂದಿಗೆ:
const cityWithOptionalChaining = user?.profile?.address?.city;
console.log(cityWithOptionalChaining); // ಔಟ್ಪುಟ್: ಲಂಡನ್
const nonExistentCity = user?.profile?.contact?.address?.city; //profile.contact ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ
console.log(nonExistentCity); // ಔಟ್ಪುಟ್: ಅನಿರ್ದಿಷ್ಟ
ಮೇಲಿನ ಉದಾಹರಣೆಯಲ್ಲಿ, ಎರಡನೇ console.log ಆಳವಾಗಿ ನೆಸ್ಟೆಡ್ ಗುಣಲಕ್ಷಣಗಳನ್ನು ಪ್ರವೇಶಿಸುವ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಐಚ್ಛಿಕ ಸರಪಳಿಯು ಹೇಗೆ ಸರಳಗೊಳಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಪ್ರದರ್ಶಿಸುತ್ತದೆ. ಯಾವುದೇ ಗುಣಲಕ್ಷಣಗಳು (profile, address, ಅಥವಾ city) null ಅಥವಾ undefined ಆಗಿದ್ದರೆ, ಅಭಿವ್ಯಕ್ತಿ undefined ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ, TypeError ಅನ್ನು ತಡೆಯುತ್ತದೆ.
ಐಚ್ಛಿಕ ಸರಪಳಿಗಾಗಿ ಬಳಕೆಯ ಪ್ರಕರಣಗಳು
- API ಪ್ರತಿಕ್ರಿಯೆಗಳನ್ನು ಪ್ರವೇಶಿಸುವುದು: API ಯಿಂದ ಡೇಟಾವನ್ನು ಪಡೆದುಕೊಳ್ಳುವಾಗ, ಪ್ರತಿಕ್ರಿಯೆ ರಚನೆಯು ಬದಲಾಗಬಹುದು. ಕಾಣೆಯಾದ ಅಥವಾ ಅಪೂರ್ಣ ಡೇಟಾದ ಬಗ್ಗೆ ಚಿಂತಿಸದೆ ನಿರ್ದಿಷ್ಟ ಕ್ಷೇತ್ರಗಳನ್ನು ಪ್ರವೇಶಿಸಲು ಐಚ್ಛಿಕ ಸರಪಳಿಯು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.
- ಬಳಕೆದಾರರ ಪ್ರೊಫೈಲ್ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವುದು: ಬಳಕೆದಾರರ ಪ್ರೊಫೈಲ್ಗಳನ್ನು ಹೊಂದಿರುವ ಅಪ್ಲಿಕೇಶನ್ಗಳಲ್ಲಿ, ಕೆಲವು ಕ್ಷೇತ್ರಗಳು ಐಚ್ಛಿಕವಾಗಿರಬಹುದು. ದೋಷಗಳನ್ನು ಉಂಟುಮಾಡದೆ ಈ ಕ್ಷೇತ್ರಗಳನ್ನು ಸುರಕ್ಷಿತವಾಗಿ ಪ್ರವೇಶಿಸಲು ಐಚ್ಛಿಕ ಸರಪಳಿಯನ್ನು ಬಳಸಬಹುದು.
- ಡೈನಾಮಿಕ್ ಡೇಟಾವನ್ನು ನಿರ್ವಹಿಸುವುದು: ಆಗಾಗ್ಗೆ ಬದಲಾಗುವ ಅಥವಾ ವೇರಿಯಬಲ್ ರಚನೆಯನ್ನು ಹೊಂದಿರುವ ಡೇಟಾವನ್ನು ವ್ಯವಹರಿಸುವಾಗ, ಕಟ್ಟುನಿಟ್ಟಾದ ಊಹೆಗಳಿಲ್ಲದೆ ಪ್ರಾಪರ್ಟಿಗಳನ್ನು ಪ್ರವೇಶಿಸಲು ಐಚ್ಛಿಕ ಸರಪಳಿಯು ದೃಢವಾದ ಮಾರ್ಗವನ್ನು ಒದಗಿಸುತ್ತದೆ.
ಫಂಕ್ಷನ್ ಕರೆಗಳೊಂದಿಗೆ ಐಚ್ಛಿಕ ಸರಪಳಿ
ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲದ ಅಥವಾ null ಆಗಿರಬಹುದಾದ ಕಾರ್ಯಗಳನ್ನು ಕರೆಯುವಾಗ ಐಚ್ಛಿಕ ಸರಪಳಿಯನ್ನು ಸಹ ಬಳಸಬಹುದು. ಈವೆಂಟ್ ಕೇಳುಗರು ಅಥವಾ ಕಾಲ್ಬ್ಯಾಕ್ಗಳನ್ನು ವ್ಯವಹರಿಸುವಾಗ ಇದು ವಿಶೇಷವಾಗಿ ಉಪಯುಕ್ತವಾಗಿದೆ.
const myObject = {
myMethod: function() {
console.log('ವಿಧಾನ ಕರೆಯಲಾಗಿದೆ!');
}
};
myObject.myMethod?.(); // ಇದು ಅಸ್ತಿತ್ವದಲ್ಲಿದ್ದರೆ myMethod ಅನ್ನು ಕರೆಯುತ್ತದೆ
const anotherObject = {};
anotherObject.myMethod?.(); // ಏನೂ ಮಾಡುವುದಿಲ್ಲ, ಯಾವುದೇ ದೋಷವನ್ನು ಎಸೆಯಲಾಗುವುದಿಲ್ಲ
ಈ ಸಂದರ್ಭದಲ್ಲಿ, ?.() ಸಿಂಟ್ಯಾಕ್ಸ್ ಫಂಕ್ಷನ್ ಆಬ್ಜೆಕ್ಟ್ನಲ್ಲಿ ಅಸ್ತಿತ್ವದಲ್ಲಿದ್ದರೆ ಮಾತ್ರ ಕರೆಯಲ್ಪಡುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ. ಫಂಕ್ಷನ್ null ಅಥವಾ undefined ಆಗಿದ್ದರೆ, ಅಭಿವ್ಯಕ್ತಿ ದೋಷವನ್ನು ಎಸೆಯದೆ undefined ಗೆ ಮೌಲ್ಯಮಾಪನ ಮಾಡುತ್ತದೆ.
ಬ್ರಾಕೆಟ್ ಸೂಚನೆಯನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು
ವೇರಿಯೇಬಲ್ಗಳು ಅಥವಾ ಅಭಿವ್ಯಕ್ತಿಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಆಬ್ಜೆಕ್ಟ್ ಪ್ರಾಪರ್ಟಿಗಳನ್ನು ಪ್ರವೇಶಿಸಲು ಬ್ರಾಕೆಟ್ ಸೂಚನೆಯು ಡೈನಾಮಿಕ್ ಮಾರ್ಗವನ್ನು ಒದಗಿಸುತ್ತದೆ. ನಿಮಗೆ ಆಸ್ತಿಯ ಹೆಸರು ಮುಂಚಿತವಾಗಿ ತಿಳಿದಿಲ್ಲದಿದ್ದಾಗ ಅಥವಾ ಮಾನ್ಯ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಐಡೆಂಟಿಫೈಯರ್ಗಳಲ್ಲದ ಹೆಸರುಗಳೊಂದಿಗೆ ಪ್ರಾಪರ್ಟಿಗಳನ್ನು ನೀವು ಪ್ರವೇಶಿಸಬೇಕಾದಾಗ ಇದು ನಿರ್ದಿಷ್ಟವಾಗಿ ಉಪಯುಕ್ತವಾಗಿದೆ.
ಮೂಲ ಸಿಂಟ್ಯಾಕ್ಸ್
ಬ್ರಾಕೆಟ್ ಸೂಚನೆಯು ಚದರ ಬ್ರಾಕೆಟ್ಗಳನ್ನು ([]) ಬಳಸುತ್ತದೆ, ಅದು ಆಸ್ತಿಯ ಹೆಸರನ್ನು ಸುತ್ತುವರಿಯುತ್ತದೆ, ಅದು ಸ್ಟ್ರಿಂಗ್ ಆಗಿರಬಹುದು ಅಥವಾ ಸ್ಟ್ರಿಂಗ್ಗೆ ಮೌಲ್ಯಮಾಪನ ಮಾಡುವ ಅಭಿವ್ಯಕ್ತಿಯಾಗಿರಬಹುದು.
ಉದಾಹರಣೆ:
const person = {
firstName: 'Alice',
lastName: 'Smith',
'age-group': 'adult'
};
// ಡಾಟ್ ಸೂಚನೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಗುಣಲಕ್ಷಣಗಳನ್ನು ಪ್ರವೇಶಿಸುವುದು (ಸರಳ ಹೆಸರುಗಳಿಗಾಗಿ):
console.log(person.firstName); // ಔಟ್ಪುಟ್: ಆಲಿಸ್
// ಬ್ರಾಕೆಟ್ ಸೂಚನೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಗುಣಲಕ್ಷಣಗಳನ್ನು ಪ್ರವೇಶಿಸುವುದು (ಡೈನಾಮಿಕ್ ಹೆಸರುಗಳು ಅಥವಾ ಅಮಾನ್ಯ ಐಡೆಂಟಿಫೈಯರ್ಗಳಿಗಾಗಿ):
console.log(person['lastName']); // ಔಟ್ಪುಟ್: ಸ್ಮಿತ್
console.log(person['age-group']); // ಔಟ್ಪುಟ್: ವಯಸ್ಕ
const propertyName = 'firstName';
console.log(person[propertyName]); // ಔಟ್ಪುಟ್: ಆಲಿಸ್
ಮೇಲಿನ ಉದಾಹರಣೆಯಲ್ಲಿ, ಮಾನ್ಯ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಐಡೆಂಟಿಫೈಯರ್ಗಳಲ್ಲದ ಹೆಸರುಗಳೊಂದಿಗೆ ಪ್ರಾಪರ್ಟಿಗಳನ್ನು ಪ್ರವೇಶಿಸಲು ಬ್ರಾಕೆಟ್ ಸೂಚನೆಯನ್ನು ಬಳಸಲಾಗುತ್ತದೆ (ಉದಾ., 'age-group') ಮತ್ತು ವೇರಿಯೇಬಲ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಪ್ರಾಪರ್ಟಿಗಳನ್ನು ಡೈನಾಮಿಕ್ ಆಗಿ ಪ್ರವೇಶಿಸಲು (propertyName).
ಬ್ರಾಕೆಟ್ ಸೂಚನೆಗಾಗಿ ಬಳಕೆಯ ಪ್ರಕರಣಗಳು
- ಡೈನಾಮಿಕ್ ಹೆಸರುಗಳೊಂದಿಗೆ ಗುಣಲಕ್ಷಣಗಳನ್ನು ಪ್ರವೇಶಿಸುವುದು: ಆಸ್ತಿಯ ಹೆಸರನ್ನು ರನ್ಟೈಮ್ನಲ್ಲಿ ನಿರ್ಧರಿಸಿದಾಗ (ಉದಾ., ಬಳಕೆದಾರರ ಇನ್ಪುಟ್ ಅಥವಾ API ಪ್ರತಿಕ್ರಿಯೆಯ ಆಧಾರದ ಮೇಲೆ), ಬ್ರಾಕೆಟ್ ಸೂಚನೆಯು ಅತ್ಯಗತ್ಯ.
- ವಿಶೇಷ ಅಕ್ಷರಗಳೊಂದಿಗೆ ಗುಣಲಕ್ಷಣಗಳನ್ನು ಪ್ರವೇಶಿಸುವುದು: ಆಸ್ತಿಯ ಹೆಸರಿನಲ್ಲಿ ವಿಶೇಷ ಅಕ್ಷರಗಳು (ಉದಾ., ಹೈಫನ್ಗಳು, ಸ್ಪೇಸ್ಗಳು) ಇದ್ದರೆ, ಅದನ್ನು ಪ್ರವೇಶಿಸಲು ಬ್ರಾಕೆಟ್ ಸೂಚನೆಯು ಏಕೈಕ ಮಾರ್ಗವಾಗಿದೆ.
- ಗುಣಲಕ್ಷಣಗಳ ಮೇಲೆ ಪುನರಾವರ್ತನೆ: ವಸ್ತುವಿನ ಗುಣಲಕ್ಷಣಗಳ ಮೇಲೆ ಪುನರಾವರ್ತಿಸಲು ಲೂಪ್ಗಳಲ್ಲಿ ಬ್ರಾಕೆಟ್ ಸೂಚನೆಯನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ.
ಬ್ರಾಕೆಟ್ ಸೂಚನೆಯೊಂದಿಗೆ ಆಬ್ಜೆಕ್ಟ್ ಪ್ರಾಪರ್ಟಿಗಳ ಮೇಲೆ ಪುನರಾವರ್ತನೆ
ನೀವು for...in ಲೂಪ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ವಸ್ತುವಿನ ಗುಣಲಕ್ಷಣಗಳ ಮೇಲೆ ಪುನರಾವರ್ತಿಸಲು ಬಯಸಿದಾಗ ಬ್ರಾಕೆಟ್ ಸೂಚನೆಯು ನಿರ್ದಿಷ್ಟವಾಗಿ ಉಪಯುಕ್ತವಾಗಿದೆ.
const car = {
make: 'Toyota',
model: 'Camry',
year: 2023
};
for (const key in car) {
if (car.hasOwnProperty(key)) { //ಸ್ವಂತ ಗುಣಲಕ್ಷಣಗಳಿಗಾಗಿ ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ
console.log(key + ': ' + car[key]);
}
}
// ಔಟ್ಪುಟ್:
// ಮಾಡಿ: ಟೊಯೋಟಾ
// ಮಾದರಿ: ಕ್ಯಾಮ್ರಿ
// ವರ್ಷ: 2023
ಈ ಉದಾಹರಣೆಯಲ್ಲಿ, for...in ಲೂಪ್ car ಆಬ್ಜೆಕ್ಟ್ನ ಪ್ರಾಪರ್ಟಿಗಳ ಮೇಲೆ ಪುನರಾವರ್ತಿಸುತ್ತದೆ ಮತ್ತು ಪ್ರತಿ ಆಸ್ತಿಯ ಮೌಲ್ಯವನ್ನು ಪ್ರವೇಶಿಸಲು ಬ್ರಾಕೆಟ್ ಸೂಚನೆಯನ್ನು ಬಳಸಲಾಗುತ್ತದೆ.
ಐಚ್ಛಿಕ ಸರಪಳಿ ಮತ್ತು ಬ್ರಾಕೆಟ್ ಸೂಚನೆಯನ್ನು ಸಂಯೋಜಿಸುವುದು
ಡೈನಾಮಿಕ್ ಪ್ರಾಪರ್ಟಿ ಹೆಸರುಗಳು ಮತ್ತು ಸಂಭಾವ್ಯವಾಗಿ ಕಾಣೆಯಾದ ಡೇಟಾದೊಂದಿಗೆ ಸಂಕೀರ್ಣ ಡೇಟಾ ರಚನೆಗಳನ್ನು ನಿರ್ವಹಿಸಲು ನೀವು ಐಚ್ಛಿಕ ಸರಪಳಿ ಮತ್ತು ಬ್ರಾಕೆಟ್ ಸೂಚನೆಯನ್ನು ಸಂಯೋಜಿಸಿದಾಗ ನಿಜವಾದ ಶಕ್ತಿ ಬರುತ್ತದೆ. ಈ ಸಂಯೋಜನೆಯು ವಸ್ತುವಿನ ರಚನೆಯು ಮುಂಚಿತವಾಗಿ ತಿಳಿದಿಲ್ಲದಿದ್ದರೂ ಸಹ ಗುಣಲಕ್ಷಣಗಳನ್ನು ಸುರಕ್ಷಿತವಾಗಿ ಪ್ರವೇಶಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.
ಸಿಂಟ್ಯಾಕ್ಸ್
ಐಚ್ಛಿಕ ಸರಪಳಿ ಮತ್ತು ಬ್ರಾಕೆಟ್ ಸೂಚನೆಯನ್ನು ಸಂಯೋಜಿಸಲು, ಚದರ ಬ್ರಾಕೆಟ್ಗಳ ಮೊದಲು ?. ಆಪರೇಟರ್ ಅನ್ನು ಬಳಸಿ.
ಉದಾಹರಣೆ:
const data = {
users: [
{
id: 1,
profile: {
details: {
country: 'Canada'
}
}
},
{
id: 2,
profile: {
}
}
]
};
function getCountry(userId) {
// ಐಡಿ ಮೂಲಕ ಬಳಕೆದಾರರನ್ನು ಹುಡುಕಿ
const user = data.users.find(user => user.id === userId);
// ಐಚ್ಛಿಕ ಸರಪಳಿ ಮತ್ತು ಬ್ರಾಕೆಟ್ ಸೂಚನೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಬಳಕೆದಾರರ ದೇಶವನ್ನು ಪ್ರವೇಶಿಸಿ
const country = user?.profile?.details?.['country'];
return country;
}
console.log(getCountry(1)); // ಔಟ್ಪುಟ್: ಕೆನಡಾ
console.log(getCountry(2)); // ಔಟ್ಪುಟ್: ಅನಿರ್ದಿಷ್ಟ (ಯಾವುದೇ ವಿವರಗಳ ಆಸ್ತಿ ಇಲ್ಲ)
console.log(getCountry(3)); // ಔಟ್ಪುಟ್: ಅನಿರ್ದಿಷ್ಟ (ಐಡಿ 3 ರೊಂದಿಗೆ ಯಾವುದೇ ಬಳಕೆದಾರರಿಲ್ಲ)
ಮೇಲಿನ ಉದಾಹರಣೆಯಲ್ಲಿ, getCountry ಫಂಕ್ಷನ್ ನಿರ್ದಿಷ್ಟ ಐಡಿಯೊಂದಿಗೆ ಬಳಕೆದಾರರ ದೇಶವನ್ನು ಹಿಂಪಡೆಯಲು ಪ್ರಯತ್ನಿಸುತ್ತದೆ. user, profile ಅಥವಾ details ಗುಣಲಕ್ಷಣಗಳು null ಅಥವಾ undefined ಆಗಿದ್ದರೆ ಕೋಡ್ ದೋಷವನ್ನು ಎಸೆಯುವುದಿಲ್ಲ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಬ್ರಾಕೆಟ್ ಸೂಚನೆಗೆ (['country']) ಮೊದಲು ಐಚ್ಛಿಕ ಸರಪಳಿ (?.) ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ.
ಸುಧಾರಿತ ಬಳಕೆಯ ಪ್ರಕರಣಗಳು
- ಡೈನಾಮಿಕ್ ಫಾರ್ಮ್ ಡೇಟಾ: ಕ್ಷೇತ್ರಗಳು ಮುಂಚಿತವಾಗಿ ತಿಳಿದಿಲ್ಲದ ಡೈನಾಮಿಕ್ ಫಾರ್ಮ್ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ, ಫಾರ್ಮ್ ಮೌಲ್ಯಗಳನ್ನು ಸುರಕ್ಷಿತವಾಗಿ ಪ್ರವೇಶಿಸಲು ನೀವು ಐಚ್ಛಿಕ ಸರಪಳಿ ಮತ್ತು ಬ್ರಾಕೆಟ್ ಸೂಚನೆಯನ್ನು ಬಳಸಬಹುದು.
- ಕಾನ್ಫಿಗರೇಶನ್ ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ನಿರ್ವಹಿಸುವುದು: ಕಾನ್ಫಿಗರೇಶನ್ ಆಬ್ಜೆಕ್ಟ್ಗಳು ಆಗಾಗ್ಗೆ ಐಚ್ಛಿಕ ಗುಣಲಕ್ಷಣಗಳೊಂದಿಗೆ ಸಂಕೀರ್ಣ ರಚನೆಯನ್ನು ಹೊಂದಿರುತ್ತವೆ. ಕಟ್ಟುನಿಟ್ಟಾದ ಊಹೆಗಳಿಲ್ಲದೆ ಈ ಗುಣಲಕ್ಷಣಗಳನ್ನು ಪ್ರವೇಶಿಸಲು ಐಚ್ಛಿಕ ಸರಪಳಿ ಮತ್ತು ಬ್ರಾಕೆಟ್ ಸೂಚನೆಯನ್ನು ಬಳಸಬಹುದು.
- ವೇರಿಯಬಲ್ ರಚನೆಯೊಂದಿಗೆ API ಪ್ರತಿಕ್ರಿಯೆಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುವುದು: ಕೆಲವು ಷರತ್ತುಗಳ ಆಧಾರದ ಮೇಲೆ ವಿವಿಧ ಸ್ವರೂಪಗಳಲ್ಲಿ ಡೇಟಾವನ್ನು ಹಿಂತಿರುಗಿಸುವ API ಗಳನ್ನು ವ್ಯವಹರಿಸುವಾಗ, ಅಗತ್ಯ ಕ್ಷೇತ್ರಗಳನ್ನು ಪ್ರವೇಶಿಸಲು ಐಚ್ಛಿಕ ಸರಪಳಿ ಮತ್ತು ಬ್ರಾಕೆಟ್ ಸೂಚನೆಯು ಹೊಂದಿಕೊಳ್ಳುವ ಮಾರ್ಗವನ್ನು ಒದಗಿಸುತ್ತದೆ.
ಐಚ್ಛಿಕ ಸರಪಳಿ ಮತ್ತು ಬ್ರಾಕೆಟ್ ಸೂಚನೆಯನ್ನು ಬಳಸುವುದಕ್ಕಾಗಿ ಉತ್ತಮ ಅಭ್ಯಾಸಗಳು
ಐಚ್ಛಿಕ ಸರಪಳಿ ಮತ್ತು ಬ್ರಾಕೆಟ್ ಸೂಚನೆಯು ಪ್ರಬಲ ಸಾಧನಗಳಾಗಿದ್ದರೂ, ಸಂಭಾವ್ಯ ಅಪಾಯಗಳನ್ನು ತಪ್ಪಿಸಲು ಅವುಗಳನ್ನು ವಿವೇಚನೆಯಿಂದ ಬಳಸುವುದು ಮತ್ತು ಉತ್ತಮ ಅಭ್ಯಾಸಗಳನ್ನು ಅನುಸರಿಸುವುದು ಮುಖ್ಯ.
- ಸಂಭಾವ್ಯವಾಗಿ ಕಾಣೆಯಾದ ಡೇಟಾಕ್ಕಾಗಿ ಐಚ್ಛಿಕ ಸರಪಳಿಯನ್ನು ಬಳಸಿ: ಆಸ್ತಿಯು
nullಅಥವಾundefinedಆಗಿರಬಹುದು ಎಂದು ನೀವು ನಿರೀಕ್ಷಿಸಿದಾಗ ಐಚ್ಛಿಕ ಸರಪಳಿಯನ್ನು ಬಳಸಬೇಕು. ಇದು ದೋಷಗಳನ್ನು ತಡೆಯುತ್ತದೆ ಮತ್ತು ನಿಮ್ಮ ಕೋಡ್ ಅನ್ನು ಹೆಚ್ಚು ದೃಢಗೊಳಿಸುತ್ತದೆ. - ಡೈನಾಮಿಕ್ ಪ್ರಾಪರ್ಟಿ ಹೆಸರುಗಳಿಗಾಗಿ ಬ್ರಾಕೆಟ್ ಸೂಚನೆಯನ್ನು ಬಳಸಿ: ಆಸ್ತಿಯ ಹೆಸರನ್ನು ರನ್ಟೈಮ್ನಲ್ಲಿ ನಿರ್ಧರಿಸಿದಾಗ ಅಥವಾ ಆಸ್ತಿಯ ಹೆಸರು ಮಾನ್ಯ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಐಡೆಂಟಿಫೈಯರ್ ಅಲ್ಲದಿದ್ದಾಗ ಬ್ರಾಕೆಟ್ ಸೂಚನೆಯನ್ನು ಬಳಸಬೇಕು.
- ಐಚ್ಛಿಕ ಸರಪಳಿಯ ಅತಿಯಾದ ಬಳಕೆಯನ್ನು ತಪ್ಪಿಸಿ: ಐಚ್ಛಿಕ ಸರಪಳಿಯು ನಿಮ್ಮ ಕೋಡ್ ಅನ್ನು ಹೆಚ್ಚು ಸಂಕ್ಷಿಪ್ತಗೊಳಿಸಬಹುದಾದರೂ, ಅತಿಯಾದ ಬಳಕೆಯು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಮತ್ತು ಡೀಬಗ್ ಮಾಡಲು ಕಷ್ಟವಾಗುತ್ತದೆ. ಅಗತ್ಯವಿದ್ದಾಗ ಮಾತ್ರ ಬಳಸಿ.
- ನಲ್ಲಿಶ್ ಕೊಯಲೆಸಿಂಗ್ ಆಪರೇಟರ್ (??) ನೊಂದಿಗೆ ಸಂಯೋಜಿಸಿ: ಆಸ್ತಿಯು
nullಅಥವಾundefinedಆಗಿರುವಾಗ ಡೀಫಾಲ್ಟ್ ಮೌಲ್ಯವನ್ನು ಒದಗಿಸಲು ನಲ್ಲಿಶ್ ಕೊಯಲೆಸಿಂಗ್ ಆಪರೇಟರ್ (??) ಅನ್ನು ಐಚ್ಛಿಕ ಸರಪಳಿಯೊಂದಿಗೆ ಬಳಸಬಹುದು. - ಸ್ಪಷ್ಟ ಮತ್ತು ಸಂಕ್ಷಿಪ್ತ ಕೋಡ್ ಅನ್ನು ಬರೆಯಿರಿ: ನಿಮ್ಮ ಕೋಡ್ ಅನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಮತ್ತು ನಿರ್ವಹಿಸಲು ಸುಲಭವಾಗಿಸಲು ಅರ್ಥಪೂರ್ಣ ವೇರಿಯೇಬಲ್ ಹೆಸರುಗಳು ಮತ್ತು ಕಾಮೆಂಟ್ಗಳನ್ನು ಬಳಸಿ.
ನಲ್ಲಿಶ್ ಕೊಯಲೆಸಿಂಗ್ ಆಪರೇಟರ್ (??) ನೊಂದಿಗೆ ಸಂಯೋಜಿಸುವುದು
ಮೌಲ್ಯವು null ಅಥವಾ undefined ಆಗಿರುವಾಗ ಡೀಫಾಲ್ಟ್ ಮೌಲ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸಲು ನಲ್ಲಿಶ್ ಕೊಯಲೆಸಿಂಗ್ ಆಪರೇಟರ್ (??) ಒಂದು ಮಾರ್ಗವನ್ನು ಒದಗಿಸುತ್ತದೆ. ಆಸ್ತಿ ಕಾಣೆಯಾದಾಗ ಫಾಲ್ಬ್ಯಾಕ್ ಮೌಲ್ಯವನ್ನು ಒದಗಿಸಲು ಇದನ್ನು ಐಚ್ಛಿಕ ಸರಪಳಿಯೊಂದಿಗೆ ಬಳಸಬಹುದು.
const settings = {
theme: {
colors: {
primary: '#007bff'
}
}
};
const primaryColor = settings?.theme?.colors?.primary ?? '#ffffff'; // ಪ್ರಾಥಮಿಕ ಬಣ್ಣವು ಕಾಣೆಯಾಗಿದ್ದರೆ ಬಿಳಿ ಬಣ್ಣಕ್ಕೆ ಡೀಫಾಲ್ಟ್ ಆಗಿರುತ್ತದೆ
console.log(primaryColor); // ಔಟ್ಪುಟ್: #007bff
const secondaryColor = settings?.theme?.colors?.secondary ?? '#cccccc'; // ದ್ವಿತೀಯಕ ಬಣ್ಣವು ಕಾಣೆಯಾಗಿದ್ದರೆ ಲೈಟ್ ಗ್ರೇಗೆ ಡೀಫಾಲ್ಟ್ ಆಗಿರುತ್ತದೆ
console.log(secondaryColor); // ಔಟ್ಪುಟ್: #cccccc
ಮೇಲಿನ ಉದಾಹರಣೆಯಲ್ಲಿ, ಅನುಗುಣವಾದ ಗುಣಲಕ್ಷಣಗಳು null ಅಥವಾ undefined ಆಗಿದ್ದರೆ primaryColor ಮತ್ತು secondaryColor ವೇರಿಯೇಬಲ್ಗಳಿಗೆ ಡೀಫಾಲ್ಟ್ ಮೌಲ್ಯಗಳನ್ನು ಒದಗಿಸಲು ನಲ್ಲಿಶ್ ಕೊಯಲೆಸಿಂಗ್ ಆಪರೇಟರ್ (??) ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ.
ದೋಷ ನಿರ್ವಹಣೆ ಮತ್ತು ಡೀಬಗ್ ಮಾಡುವುದು
ಐಚ್ಛಿಕ ಸರಪಳಿಯು ಕೆಲವು ರೀತಿಯ ದೋಷಗಳನ್ನು ತಡೆಯುತ್ತದೆಯಾದರೂ, ದೋಷಗಳನ್ನು ಸಲೀಸಾಗಿ ನಿರ್ವಹಿಸುವುದು ಮತ್ತು ನಿಮ್ಮ ಕೋಡ್ ಅನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಡೀಬಗ್ ಮಾಡುವುದು ಇನ್ನೂ ಮುಖ್ಯವಾಗಿದೆ. ಕೆಲವು ಸಲಹೆಗಳು ಇಲ್ಲಿವೆ:
- ಟ್ರೈ-ಕ್ಯಾಚ್ ಬ್ಲಾಕ್ಗಳನ್ನು ಬಳಸಿ: ಅನಿರೀಕ್ಷಿತ ದೋಷಗಳನ್ನು ನಿಭಾಯಿಸಲು ನಿಮ್ಮ ಕೋಡ್ ಅನ್ನು
try-catchಬ್ಲಾಕ್ಗಳಲ್ಲಿ ಸುತ್ತಿ. - ಕನ್ಸೋಲ್ ಲಾಗಿಂಗ್ ಬಳಸಿ: ವೇರಿಯೇಬಲ್ಗಳ ಮೌಲ್ಯಗಳನ್ನು ಪರೀಕ್ಷಿಸಲು ಮತ್ತು ನಿಮ್ಮ ಕೋಡ್ನ ಹರಿವನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಲು
console.logಹೇಳಿಕೆಗಳನ್ನು ಬಳಸಿ. - ಡೀಬಗ್ ಮಾಡುವ ಪರಿಕರಗಳನ್ನು ಬಳಸಿ: ನಿಮ್ಮ ಕೋಡ್ ಮೂಲಕ ಹೆಜ್ಜೆ ಹಾಕಲು ಮತ್ತು ದೋಷಗಳನ್ನು ಗುರುತಿಸಲು ಬ್ರೌಸರ್ ಡೆವಲಪರ್ ಪರಿಕರಗಳು ಅಥವಾ IDE ಡೀಬಗ್ ಮಾಡುವ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಬಳಸಿ.
- ಘಟಕ ಪರೀಕ್ಷೆಗಳನ್ನು ಬರೆಯಿರಿ: ನಿಮ್ಮ ಕೋಡ್ ನಿರೀಕ್ಷೆಯಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂದು ಪರಿಶೀಲಿಸಲು ಮತ್ತು ಆರಂಭಿಕ ದೋಷಗಳನ್ನು ಹಿಡಿಯಲು ಘಟಕ ಪರೀಕ್ಷೆಗಳನ್ನು ಬರೆಯಿರಿ.
try {
const user = data.users.find(user => user.id === userId);
const country = user?.profile?.details?.['country'];
console.log(country ?? 'ದೇಶ ಕಂಡುಬಂದಿಲ್ಲ');
} catch (error) {
console.error('ದೋಷ ಸಂಭವಿಸಿದೆ:', error);
}
ನೈಜ-ಪ್ರಪಂಚದ ಉದಾಹರಣೆಗಳು
ವಿವಿಧ ಸನ್ನಿವೇಶಗಳಲ್ಲಿ ಐಚ್ಛಿಕ ಸರಪಳಿ ಮತ್ತು ಬ್ರಾಕೆಟ್ ಸೂಚನೆಯನ್ನು ಹೇಗೆ ಬಳಸಬಹುದು ಎಂಬುದರ ಕೆಲವು ನೈಜ-ಪ್ರಪಂಚದ ಉದಾಹರಣೆಗಳನ್ನು ಅನ್ವೇಷಿಸೋಣ.
ಉದಾಹರಣೆ 1: API ನಿಂದ ಬಳಕೆದಾರರ ಡೇಟಾವನ್ನು ಪ್ರವೇಶಿಸುವುದು
async function fetchUserData(userId) {
try {
const response = await fetch(`https://api.example.com/users/${userId}`);
const userData = await response.json();
const userName = userData?.name ?? 'ತಿಳಿಯದ ಬಳಕೆದಾರ';
const userEmail = userData?.email ?? 'ಯಾವುದೇ ಇಮೇಲ್ ಒದಗಿಸಲಾಗಿಲ್ಲ';
const userCity = userData?.address?.city ?? 'ಯಾವುದೇ ನಗರವನ್ನು ಒದಗಿಸಲಾಗಿಲ್ಲ';
console.log(`ಬಳಕೆದಾರರ ಹೆಸರು: ${userName}`);
console.log(`ಬಳಕೆದಾರರ ಇಮೇಲ್: ${userEmail}`);
console.log(`ಬಳಕೆದಾರರ ನಗರ: ${userCity}`);
} catch (error) {
console.error('ಬಳಕೆದಾರರ ಡೇಟಾವನ್ನು ಪಡೆಯಲು ವಿಫಲವಾಗಿದೆ:', error);
}
}
// ಬಳಕೆಯ ಉದಾಹರಣೆ:
// fetchUserData(123);
API ನಿಂದ ಬಳಕೆದಾರರ ಡೇಟಾವನ್ನು ಹೇಗೆ ಪಡೆಯುವುದು ಮತ್ತು ಐಚ್ಛಿಕ ಸರಪಳಿ ಮತ್ತು ನಲ್ಲಿಶ್ ಕೊಯಲೆಸಿಂಗ್ ಆಪರೇಟರ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ನಿರ್ದಿಷ್ಟ ಕ್ಷೇತ್ರಗಳನ್ನು ಹೇಗೆ ಪ್ರವೇಶಿಸುವುದು ಎಂಬುದನ್ನು ಈ ಉದಾಹರಣೆ ತೋರಿಸುತ್ತದೆ. ಯಾವುದೇ ಕ್ಷೇತ್ರಗಳು ಕಾಣೆಯಾಗಿದ್ದರೆ, ಡೀಫಾಲ್ಟ್ ಮೌಲ್ಯಗಳನ್ನು ಬಳಸಲಾಗುತ್ತದೆ.
ಉದಾಹರಣೆ 2: ಡೈನಾಮಿಕ್ ಫಾರ್ಮ್ ಡೇಟಾವನ್ನು ನಿರ್ವಹಿಸುವುದು
function processFormData(formData) {
const firstName = formData?.['first-name'] ?? '';
const lastName = formData?.['last-name'] ?? '';
const age = formData?.age ?? 0;
console.log(`ಮೊದಲ ಹೆಸರು: ${firstName}`);
console.log(`ಕೊನೆಯ ಹೆಸರು: ${lastName}`);
console.log(`ವಯಸ್ಸು: ${age}`);
}
// ಬಳಕೆಯ ಉದಾಹರಣೆ:
const formData = {
'first-name': 'John',
'last-name': 'Doe',
age: 30
};
processFormData(formData);
ಕ್ಷೇತ್ರಗಳು ಮುಂಚಿತವಾಗಿ ತಿಳಿದಿಲ್ಲದ ಡೈನಾಮಿಕ್ ಫಾರ್ಮ್ ಡೇಟಾವನ್ನು ಹೇಗೆ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುವುದು ಎಂಬುದನ್ನು ಈ ಉದಾಹರಣೆ ತೋರಿಸುತ್ತದೆ. ಫಾರ್ಮ್ ಮೌಲ್ಯಗಳನ್ನು ಸುರಕ್ಷಿತವಾಗಿ ಪ್ರವೇಶಿಸಲು ಐಚ್ಛಿಕ ಸರಪಳಿ ಮತ್ತು ಬ್ರಾಕೆಟ್ ಸೂಚನೆಯನ್ನು ಬಳಸಲಾಗುತ್ತದೆ.
ತೀರ್ಮಾನ
ಐಚ್ಛಿಕ ಸರಪಳಿ ಮತ್ತು ಬ್ರಾಕೆಟ್ ಸೂಚನೆಯು ಪ್ರಬಲ ಸಾಧನಗಳಾಗಿವೆ, ಅದು ನಿಮ್ಮ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಕೋಡ್ನ ದೃಢತೆ ಮತ್ತು ನಿರ್ವಹಣೆಯನ್ನು ಗಮನಾರ್ಹವಾಗಿ ಸುಧಾರಿಸುತ್ತದೆ. ಈ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಬಳಸುವುದು ಹೇಗೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವ ಮೂಲಕ, ನೀವು ಸಂಕೀರ್ಣ ಡೇಟಾ ರಚನೆಗಳನ್ನು ಸುಲಭವಾಗಿ ನಿರ್ವಹಿಸಬಹುದು ಮತ್ತು ಅನಿರೀಕ್ಷಿತ ದೋಷಗಳನ್ನು ತಡೆಯಬಹುದು. ಈ ತಂತ್ರಗಳನ್ನು ವಿವೇಚನೆಯಿಂದ ಬಳಸುವುದು ಮತ್ತು ಸ್ಪಷ್ಟವಾದ, ಸಂಕ್ಷಿಪ್ತ ಮತ್ತು ವಿಶ್ವಾಸಾರ್ಹ ಕೋಡ್ ಅನ್ನು ಬರೆಯಲು ಉತ್ತಮ ಅಭ್ಯಾಸಗಳನ್ನು ಅನುಸರಿಸಲು ಮರೆಯದಿರಿ.
ಐಚ್ಛಿಕ ಸರಪಳಿ ಮತ್ತು ಬ್ರಾಕೆಟ್ ಸೂಚನೆಯನ್ನು ಕರಗತ ಮಾಡಿಕೊಳ್ಳುವ ಮೂಲಕ, ನಿಮ್ಮ ದಾರಿಯಲ್ಲಿ ಬರುವ ಯಾವುದೇ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಅಭಿವೃದ್ಧಿ ಸವಾಲನ್ನು ಎದುರಿಸಲು ನೀವು ಸಿದ್ಧರಾಗಿರುತ್ತೀರಿ. ಹ್ಯಾಪಿ ಕೋಡಿಂಗ್!