ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ನ ವಿಕಸನವನ್ನು ಅನ್ವೇಷಿಸಿ, ಅದರ ಆರಂಭದಿಂದ ಇಂದಿನ ಶಕ್ತಿಶಾಲಿ ಸ್ಥಿತಿಯವರೆಗೆ. ವಿಶ್ವಾದ್ಯಂತ ಡೆವಲಪರ್ಗಳಿಗಾಗಿ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ವೈಶಿಷ್ಟ್ಯಗಳ ಸಮಗ್ರ ಟೈಮ್ಲೈನ್.
ವೆಬ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ ವಿಕಸನದ ಟೈಮ್ಲೈನ್: ಜಾಗತಿಕ ಡೆವಲಪರ್ಗಳಿಗಾಗಿ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಭಾಷೆಯ ವೈಶಿಷ್ಟ್ಯಗಳ ಇತಿಹಾಸ
ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್, ವೆಬ್ಗೆ ಶಕ್ತಿ ನೀಡುವ ಭಾಷೆ, ಅದರ ಆರಂಭದಿಂದ ಗಮನಾರ್ಹ ರೂಪಾಂತರಕ್ಕೆ ಒಳಗಾಗಿದೆ. ವೆಬ್ ಪುಟಗಳಿಗೆ ಸಂವಾದಾತ್ಮಕತೆಯನ್ನು ಸೇರಿಸಲು ಸ್ಕ್ರಿಪ್ಟಿಂಗ್ ಭಾಷೆಯಾಗಿ ಪ್ರಾರಂಭವಾದದ್ದು, ಇಂದು ಫ್ರಂಟ್-ಎಂಡ್, ಬ್ಯಾಕ್-ಎಂಡ್, ಮೊಬೈಲ್ ಮತ್ತು ಡೆಸ್ಕ್ಟಾಪ್ ಡೆವಲಪ್ಮೆಂಟ್ಗಾಗಿ ಬಳಸಲಾಗುವ ಶಕ್ತಿಯುತ, ಬಹುಮುಖ ಭಾಷೆಯಾಗಿ ವಿಕಸನಗೊಂಡಿದೆ. ಈ ಸಮಗ್ರ ಟೈಮ್ಲೈನ್ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ನ ವಿಕಸನದ ಬಗ್ಗೆ ಜಾಗತಿಕ ದೃಷ್ಟಿಕೋನವನ್ನು ಒದಗಿಸುತ್ತದೆ, ಪ್ರತಿ ECMAScript (ES) ವಿವರಣೆಯಲ್ಲಿ ಪರಿಚಯಿಸಲಾದ ಪ್ರಮುಖ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಎತ್ತಿ ತೋರಿಸುತ್ತದೆ. ನೀವು ಅನುಭವಿ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಪರಿಣತರಾಗಿರಲಿ ಅಥವಾ ವೆಬ್ ಡೆವಲಪ್ಮೆಂಟ್ ಜಗತ್ತಿಗೆ ಹೊಸಬರಾಗಿರಲಿ, ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ನ ಇತಿಹಾಸದ ಮೂಲಕದ ಈ ಪ್ರಯಾಣವು ಭಾಷೆ ಮತ್ತು ಅದರ ಸಾಮರ್ಥ್ಯಗಳ ಬಗ್ಗೆ ನಿಮ್ಮ ತಿಳುವಳಿಕೆಯನ್ನು ಆಳವಾಗಿಸುತ್ತದೆ.
ಆರಂಭಿಕ ದಿನಗಳು: ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ 1.0 - 1.5 (1995-1999)
ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು 1995ರಲ್ಲಿ ನೆಟ್ಸ್ಕೇಪ್ನಲ್ಲಿ ಬ್ರೆಂಡನ್ ಐಕ್ ಅವರು ರಚಿಸಿದರು. ವೆಬ್ ಪುಟಗಳನ್ನು ಹೆಚ್ಚು ಕ್ರಿಯಾತ್ಮಕ ಮತ್ತು ಸಂವಾದಾತ್ಮಕವಾಗಿಸುವುದು ಇದರ ಆರಂಭಿಕ ಗುರಿಯಾಗಿತ್ತು. ಈ ಆರಂಭಿಕ ಆವೃತ್ತಿಗಳು ಭಾಷೆಗೆ ಅಡಿಪಾಯ ಹಾಕಿದವು, ಇಂದಿಗೂ ಮೂಲಭೂತವಾಗಿರುವ ಪ್ರಮುಖ ಪರಿಕಲ್ಪನೆಗಳನ್ನು ಪರಿಚಯಿಸಿದವು.
- JavaScript 1.0 (1995): ಆರಂಭಿಕ ಬಿಡುಗಡೆ, ಮೂಲಭೂತ ಸ್ಕ್ರಿಪ್ಟಿಂಗ್ ಸಾಮರ್ಥ್ಯಗಳ ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸಲಾಗಿತ್ತು.
- JavaScript 1.1 (1996): ಈವೆಂಟ್ ಹ್ಯಾಂಡ್ಲರ್ಗಳು (ಉದಾ., `onclick`, `onmouseover`), ಮೂಲಭೂತ ಫಾರ್ಮ್ ವ್ಯಾಲಿಡೇಶನ್, ಮತ್ತು ಕುಕೀ ಮ್ಯಾನಿಪ್ಯುಲೇಶನ್ನಂತಹ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಪರಿಚಯಿಸಲಾಯಿತು. ಹೆಚ್ಚು ಸಂವಾದಾತ್ಮಕ ವೆಬ್ ಪುಟಗಳನ್ನು ನಿರ್ಮಿಸಲು ಈ ವೈಶಿಷ್ಟ್ಯಗಳು ನಿರ್ಣಾಯಕವಾಗಿದ್ದವು.
- JavaScript 1.2 (1997): ಪ್ಯಾಟರ್ನ್ ಮ್ಯಾಚಿಂಗ್ಗಾಗಿ ರೆಗ್ಯುಲರ್ ಎಕ್ಸ್ಪ್ರೆಶನ್ಗಳನ್ನು ಸೇರಿಸಲಾಯಿತು, ಇದು ಟೆಕ್ಸ್ಟ್ ಪ್ರೊಸೆಸಿಂಗ್ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ಗಮನಾರ್ಹವಾಗಿ ಹೆಚ್ಚಿಸಿತು.
- JavaScript 1.3 (1998): ಹೆಚ್ಚು ಸುಧಾರಿತ ಸ್ಟ್ರಿಂಗ್ ಮ್ಯಾನಿಪ್ಯುಲೇಶನ್ ಮತ್ತು ಡೇಟ್ ಹ್ಯಾಂಡ್ಲಿಂಗ್ಗೆ ಬೆಂಬಲವನ್ನು ಒಳಗೊಂಡಿತ್ತು.
- JavaScript 1.5 (1999): ಸಣ್ಣ ಸುಧಾರಣೆಗಳು ಮತ್ತು ಬಗ್ ಫಿಕ್ಸ್ಗಳನ್ನು ಒದಗಿಸಲಾಯಿತು.
ಉದಾಹರಣೆ: ಒಂದು ಬಟನ್ ಕ್ಲಿಕ್ ಮಾಡಿದಾಗ ಎಚ್ಚರಿಕೆಯ ಸಂದೇಶವನ್ನು ಪ್ರದರ್ಶಿಸಲು ಒಂದು ಸರಳ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ 1.1 ಸ್ಕ್ರಿಪ್ಟ್:
<button onclick="alert('Hello, world!')">Click Me</button>
ಮಾನಕೀಕರಣದ ಯುಗ: ECMAScript 1-3 (1997-1999)
ವಿವಿಧ ಬ್ರೌಸರ್ಗಳಲ್ಲಿ ಅಂತರ್ಕಾರ್ಯಾಚರಣೆಯನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು, ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ECMA ಇಂಟರ್ನ್ಯಾಷನಲ್ನಿಂದ ECMAScript (ES) ಎಂಬ ಹೆಸರಿನಲ್ಲಿ ಮಾನಕೀಕರಿಸಲಾಯಿತು. ಈ ಮಾನಕೀಕರಣ ಪ್ರಕ್ರಿಯೆಯು ಭಾಷೆಯನ್ನು ಏಕೀಕರಿಸಲು ಮತ್ತು ವಿಘಟನೆಯನ್ನು ತಡೆಯಲು ಸಹಾಯ ಮಾಡಿತು.
- ECMAScript 1 (1997): ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ನ ಮೊದಲ ಮಾನಕೀಕೃತ ಆವೃತ್ತಿ, ಭಾಷೆಯ ಮೂಲ ಸಿಂಟ್ಯಾಕ್ಸ್ ಮತ್ತು ಸೆಮ್ಯಾಂಟಿಕ್ಸ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ.
- ECMAScript 2 (1998): ISO/IEC 16262 ಗೆ ಹೊಂದಿಕೆಯಾಗುವಂತೆ ಸಣ್ಣ ಸಂಪಾದಕೀಯ ಬದಲಾವಣೆಗಳು.
- ECMAScript 3 (1999): ಎರರ್ ಹ್ಯಾಂಡ್ಲಿಂಗ್ಗಾಗಿ `try...catch`, ಸುಧಾರಿತ ರೆಗ್ಯುಲರ್ ಎಕ್ಸ್ಪ್ರೆಶನ್ಗಳು, ಮತ್ತು ಹೆಚ್ಚಿನ ಡೇಟಾ ಪ್ರಕಾರಗಳಿಗೆ ಬೆಂಬಲದಂತಹ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಪರಿಚಯಿಸಲಾಯಿತು.
ಉದಾಹರಣೆ: ಎರರ್ ಹ್ಯಾಂಡ್ಲಿಂಗ್ಗಾಗಿ ECMAScript 3 ರಲ್ಲಿ `try...catch` ಬಳಸುವುದು:
try {
// Code that might throw an error
let result = 10 / undefined; // This will cause an error
console.log(result);
} catch (error) {
// Handle the error
console.error("An error occurred: " + error);
}
ಕಳೆದುಹೋದ ವರ್ಷಗಳು: ECMAScript 4 (ಕೈಬಿಡಲಾಯಿತು)
ECMAScript 4 ಭಾಷೆಯನ್ನು ಗಮನಾರ್ಹವಾಗಿ ಪರಿಷ್ಕರಿಸುವ ಒಂದು ಮಹತ್ವಾಕಾಂಕ್ಷೆಯ ಪ್ರಯತ್ನವಾಗಿತ್ತು, ಇದರಲ್ಲಿ ಕ್ಲಾಸ್ಗಳು, ಇಂಟರ್ಫೇಸ್ಗಳು ಮತ್ತು ಸ್ಟ್ಯಾಟಿಕ್ ಟೈಪಿಂಗ್ನಂತಹ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಪರಿಚಯಿಸಲಾಯಿತು. ಆದಾಗ್ಯೂ, ಭಿನ್ನಾಭಿಪ್ರಾಯಗಳು ಮತ್ತು ಸಂಕೀರ್ಣತೆಯಿಂದಾಗಿ, ಈ ಪ್ರಯತ್ನವನ್ನು ಅಂತಿಮವಾಗಿ ಕೈಬಿಡಲಾಯಿತು. ES4 ಎಂದಿಗೂ ಕಾರ್ಯರೂಪಕ್ಕೆ ಬರದಿದ್ದರೂ, ಅದರ ಆಲೋಚನೆಗಳು ECMAScript ನ ನಂತರದ ಆವೃತ್ತಿಗಳ ಮೇಲೆ ಪ್ರಭಾವ ಬೀರಿದವು.
ಪುನರುಜ್ಜೀವನ: ECMAScript 5 (2009)
ES4 ವಿಫಲವಾದ ನಂತರ, ಹೆಚ್ಚು ಹಂತ-ಹಂತದ ವಿಧಾನದತ್ತ ಗಮನ ಹರಿಸಲಾಯಿತು. ECMAScript 5 ಭಾಷೆಗೆ ಹಲವಾರು ಪ್ರಮುಖ ಸುಧಾರಣೆಗಳನ್ನು ತಂದಿತು, ಅದರ ಕಾರ್ಯಕ್ಷಮತೆ ಮತ್ತು ವಿಶ್ವಾಸಾರ್ಹತೆಯನ್ನು ಸುಧಾರಿಸಿತು.
- Strict Mode: `'use strict'` ಡೈರೆಕ್ಟಿವ್ ಮೂಲಕ ಪರಿಚಯಿಸಲಾಯಿತು, ಸ್ಟ್ರಿಕ್ಟ್ ಮೋಡ್ ಕಟ್ಟುನಿಟ್ಟಾದ ಪಾರ್ಸಿಂಗ್ ಮತ್ತು ಎರರ್ ಹ್ಯಾಂಡ್ಲಿಂಗ್ ಅನ್ನು ಜಾರಿಗೊಳಿಸುತ್ತದೆ, ಸಾಮಾನ್ಯ ತಪ್ಪುಗಳನ್ನು ತಡೆಯುತ್ತದೆ ಮತ್ತು ಕೋಡ್ ಸುರಕ್ಷತೆಯನ್ನು ಸುಧಾರಿಸುತ್ತದೆ.
- JSON Support: `JSON.parse()` ಮತ್ತು `JSON.stringify()` ನೊಂದಿಗೆ JSON ಪಾರ್ಸಿಂಗ್ ಮತ್ತು ಸೀರಿಯಲೈಸೇಶನ್ಗೆ ನೇಟಿವ್ ಬೆಂಬಲ.
- Array Methods: ಹೆಚ್ಚು ಪರಿಣಾಮಕಾರಿ ಅರೇ ಮ್ಯಾನಿಪ್ಯುಲೇಶನ್ಗಾಗಿ `forEach()`, `map()`, `filter()`, `reduce()`, `some()`, ಮತ್ತು `every()` ನಂತಹ ಹೊಸ ಅರೇ ಮೆಥಡ್ಗಳನ್ನು ಸೇರಿಸಲಾಯಿತು.
- Object Properties: `Object.defineProperty()` ಮತ್ತು `Object.defineProperties()` ನಂತಹ ಆಬ್ಜೆಕ್ಟ್ ಪ್ರಾಪರ್ಟಿಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು ಮತ್ತು ನಿಯಂತ್ರಿಸಲು ಮೆಥಡ್ಗಳನ್ನು ಪರಿಚಯಿಸಲಾಯಿತು.
- Getter and Setter: ಆಬ್ಜೆಕ್ಟ್ ಪ್ರಾಪರ್ಟಿಗಳಿಗಾಗಿ ಗೆಟರ್ ಮತ್ತು ಸೆಟರ್ ಫಂಕ್ಷನ್ಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು ಅವಕಾಶ ಮಾಡಿಕೊಡಲಾಯಿತು, ಇದು ಆಬ್ಜೆಕ್ಟ್ ಡೇಟಾಗೆ ಹೆಚ್ಚು ನಿಯಂತ್ರಿತ ಪ್ರವೇಶವನ್ನು ಸಾಧ್ಯವಾಗಿಸಿತು.
ಉದಾಹರಣೆ: ಅರೇಯನ್ನು ರೂಪಾಂತರಿಸಲು ECMAScript 5 ರಲ್ಲಿ `Array.map()` ಬಳಸುವುದು:
const numbers = [1, 2, 3, 4, 5];
const squaredNumbers = numbers.map(function(number) {
return number * number;
});
console.log(squaredNumbers); // Output: [1, 4, 9, 16, 25]
ಆಧುನಿಕ ಯುಗ: ECMAScript 6 (ES2015) ಮತ್ತು ನಂತರ
ECMAScript 6 (ES2015) ಒಂದು ಮಹತ್ವದ ಬಿಡುಗಡೆಯಾಗಿತ್ತು, ಇದು ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ನ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ಮತ್ತು ಡೆವಲಪರ್ ಅನುಭವವನ್ನು ಗಮನಾರ್ಹವಾಗಿ ಹೆಚ್ಚಿಸಿದ ಹಲವಾರು ಹೊಸ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಪರಿಚಯಿಸಿತು. ಈ ಬಿಡುಗಡೆಯು ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ಗೆ ಒಂದು ಹೊಸ ಯುಗದ ಆರಂಭವನ್ನು ಗುರುತಿಸಿತು, ವಾರ್ಷಿಕ ನವೀಕರಣಗಳು ಸಣ್ಣ, ಹೆಚ್ಚು ಕೇಂದ್ರೀಕೃತ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಪರಿಚಯಿಸಿದವು.
ECMAScript 6 (ES2015)
- Classes: ಪ್ರೋಟೋಟೈಪ್-ಆಧಾರಿತ ಇನ್ಹೆರಿಟೆನ್ಸ್ಗಾಗಿ ಸಿಂಟ್ಯಾಕ್ಟಿಕ್ ಶುಗರ್, ಇದು ಇತರ ಭಾಷೆಗಳಿಂದ ಬರುವ ಡೆವಲಪರ್ಗಳಿಗೆ ಆಬ್ಜೆಕ್ಟ್-ಓರಿಯೆಂಟೆಡ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಅನ್ನು ಹೆಚ್ಚು ಪರಿಚಿತವಾಗಿಸುತ್ತದೆ.
- Arrow Functions: ಲೆಕ್ಸಿಕಲ್ `this` ಬೈಂಡಿಂಗ್ನೊಂದಿಗೆ ಫಂಕ್ಷನ್ಗಳನ್ನು ಬರೆಯಲು ಹೆಚ್ಚು ಸಂಕ್ಷಿಪ್ತ ಸಿಂಟ್ಯಾಕ್ಸ್.
- Template Literals: ಸ್ಟ್ರಿಂಗ್ಗಳ ಒಳಗೆ ಎಕ್ಸ್ಪ್ರೆಶನ್ಗಳನ್ನು ಎಂಬೆಡ್ ಮಾಡಲು ಅನುಮತಿಸುತ್ತದೆ, ಇದು ಸ್ಟ್ರಿಂಗ್ ಕನ್ಕ್ಯಾಟಿನೇಶನ್ ಅನ್ನು ಸುಲಭ ಮತ್ತು ಹೆಚ್ಚು ಓದಬಲ್ಲದಾಗಿಸುತ್ತದೆ.
- Let and Const: ಬ್ಲಾಕ್-ಸ್ಕೋಪ್ಡ್ ವೇರಿಯೇಬಲ್ ಡಿಕ್ಲರೇಶನ್ಗಳು, ವೇರಿಯೇಬಲ್ ಸ್ಕೋಪ್ನ ಮೇಲೆ ಹೆಚ್ಚು ನಿಯಂತ್ರಣವನ್ನು ಒದಗಿಸುತ್ತದೆ.
- Destructuring: ಆಬ್ಜೆಕ್ಟ್ಗಳು ಮತ್ತು ಅರೇಗಳಿಂದ ಮೌಲ್ಯಗಳನ್ನು ವೇರಿಯೇಬಲ್ಗಳಿಗೆ ಹೊರತೆಗೆಯಲು ಅನುಮತಿಸುತ್ತದೆ.
- Modules: ಮಾಡ್ಯೂಲ್ಗಳಿಗೆ ನೇಟಿವ್ ಬೆಂಬಲ, ಉತ್ತಮ ಕೋಡ್ ಸಂಘಟನೆ ಮತ್ತು ಮರುಬಳಕೆಯನ್ನು ಸಾಧ್ಯವಾಗಿಸುತ್ತದೆ.
- Promises: ಅಸಿಂಕ್ರೋನಸ್ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಹೆಚ್ಚು ಸುಂದರವಾದ ಮಾರ್ಗ, ಕಾಲ್ಬ್ಯಾಕ್ಗಳನ್ನು ಹೆಚ್ಚು ರಚನಾತ್ಮಕ ವಿಧಾನದಿಂದ ಬದಲಾಯಿಸುತ್ತದೆ.
- Default Parameters: ಫಂಕ್ಷನ್ ಪ್ಯಾರಾಮೀಟರ್ಗಳಿಗೆ ಡೀಫಾಲ್ಟ್ ಮೌಲ್ಯಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಲು ಅನುಮತಿಸುತ್ತದೆ.
- Rest and Spread Operators: ಫಂಕ್ಷನ್ ಆರ್ಗ್ಯುಮೆಂಟ್ಗಳು ಮತ್ತು ಅರೇ ಎಲಿಮೆಂಟ್ಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಹೆಚ್ಚು ಹೊಂದಿಕೊಳ್ಳುವ ಮಾರ್ಗಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ.
ಉದಾಹರಣೆ: ES2015 ರಲ್ಲಿ ಕ್ಲಾಸ್ಗಳು ಮತ್ತು ಆರೋ ಫಂಕ್ಷನ್ಗಳನ್ನು ಬಳಸುವುದು:
class Person {
constructor(name) {
this.name = name;
}
greet = () => {
console.log(`Hello, my name is ${this.name}`);
}
}
const person = new Person("Alice");
person.greet(); // Output: Hello, my name is Alice
ECMAScript 2016 (ES7)
- Array.prototype.includes(): ಒಂದು ಅರೇ ನಿರ್ದಿಷ್ಟ ಎಲಿಮೆಂಟ್ ಅನ್ನು ಒಳಗೊಂಡಿದೆಯೇ ಎಂದು ನಿರ್ಧರಿಸುತ್ತದೆ.
- Exponentiation Operator (**): ಒಂದು ಸಂಖ್ಯೆಯನ್ನು ಘಾತಕ್ಕೆ ಏರಿಸಲು ಶಾರ್ಟ್ಹ್ಯಾಂಡ್.
ಉದಾಹರಣೆ: ES2016 ರಲ್ಲಿ ಘಾತೀಯ ಆಪರೇಟರ್ ಬಳಸುವುದು:
const result = 2 ** 3; // 2 raised to the power of 3
console.log(result); // Output: 8
ECMAScript 2017 (ES8)
- Async/Await: ಪ್ರಾಮಿಸ್ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಸಿಂಟ್ಯಾಕ್ಟಿಕ್ ಶುಗರ್, ಅಸಿಂಕ್ರೋನಸ್ ಕೋಡ್ ಅನ್ನು ಓದಲು ಮತ್ತು ಬರೆಯಲು ಸುಲಭವಾಗಿಸುತ್ತದೆ.
- Object.entries(): ನಿರ್ದಿಷ್ಟ ಆಬ್ಜೆಕ್ಟ್ನ ಸ್ವಂತ ಎಣಿಸಬಹುದಾದ ಪ್ರಾಪರ್ಟಿ [ಕೀ, ಮೌಲ್ಯ] ಜೋಡಿಗಳ ಅರೇಯನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ.
- Object.values(): ನಿರ್ದಿಷ್ಟ ಆಬ್ಜೆಕ್ಟ್ನ ಸ್ವಂತ ಎಣಿಸಬಹುದಾದ ಪ್ರಾಪರ್ಟಿ ಮೌಲ್ಯಗಳ ಅರೇಯನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ.
- String Padding: ಸ್ಟ್ರಿಂಗ್ಗಳನ್ನು ಅಕ್ಷರಗಳೊಂದಿಗೆ ಪ್ಯಾಡ್ ಮಾಡಲು ಮೆಥಡ್ಗಳು.
ಉದಾಹರಣೆ: ES2017 ರಲ್ಲಿ async/await ಬಳಸುವುದು:
async function fetchData() {
try {
const response = await fetch('https://api.example.com/data');
const data = await response.json();
console.log(data);
} catch (error) {
console.error("Error fetching data: " + error);
}
}
fetchData();
ECMAScript 2018 (ES9)
- Rest/Spread Properties: ಆಬ್ಜೆಕ್ಟ್ ಪ್ರಾಪರ್ಟಿಗಳಿಗಾಗಿ ರೆಸ್ಟ್/ಸ್ಪ್ರೆಡ್ ಆಪರೇಟರ್ಗಳನ್ನು ಬಳಸಲು ಅನುಮತಿಸುತ್ತದೆ.
- Asynchronous Iteration: ಅಸಿಂಕ್ರೋನಸ್ ಡೇಟಾ ಸ್ಟ್ರೀಮ್ಗಳ ಮೇಲೆ ಇಟರೇಟ್ ಮಾಡಲು ಅನುಮತಿಸುತ್ತದೆ.
- Promise.prototype.finally(): ಒಂದು ಪ್ರಾಮಿಸ್ ಸೆಟಲ್ ಆದಾಗ (ರಿಸಾಲ್ವ್ ಅಥವಾ ರಿಜೆಕ್ಟ್ ಆದಾಗ) ಯಾವಾಗಲೂ ಕಾರ್ಯಗತಗೊಳ್ಳುವ ಕಾಲ್ಬ್ಯಾಕ್.
- RegExp Improvements: ಸುಧಾರಿತ ರೆಗ್ಯುಲರ್ ಎಕ್ಸ್ಪ್ರೆಶನ್ ವೈಶಿಷ್ಟ್ಯಗಳು.
ಉದಾಹರಣೆ: ES2018 ರಲ್ಲಿ ರೆಸ್ಟ್ ಪ್ರಾಪರ್ಟಿಗಳನ್ನು ಬಳಸುವುದು:
const { a, b, ...rest } = { a: 1, b: 2, c: 3, d: 4 };
console.log(a); // Output: 1
console.log(b); // Output: 2
console.log(rest); // Output: { c: 3, d: 4 }
ECMAScript 2019 (ES10)
- Array.prototype.flat(): ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಆಳದವರೆಗೆ ಎಲ್ಲಾ ಸಬ್-ಅರೇ ಎಲಿಮೆಂಟ್ಗಳನ್ನು ಒಂದು ಹೊಸ ಅರೇಗೆ ಪುನರಾವರ್ತಿತವಾಗಿ ಜೋಡಿಸುತ್ತದೆ.
- Array.prototype.flatMap(): ಮ್ಯಾಪಿಂಗ್ ಫಂಕ್ಷನ್ ಬಳಸಿ ಪ್ರತಿ ಎಲಿಮೆಂಟ್ ಅನ್ನು ಮ್ಯಾಪ್ ಮಾಡುತ್ತದೆ, ನಂತರ ಫಲಿತಾಂಶವನ್ನು ಹೊಸ ಅರೇಗೆ ಫ್ಲಾಟ್ ಮಾಡುತ್ತದೆ.
- String.prototype.trimStart() / trimEnd(): ಸ್ಟ್ರಿಂಗ್ನ ಆರಂಭ/ಅಂತ್ಯದಿಂದ ವೈಟ್ಸ್ಪೇಸ್ ಅನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ.
- Object.fromEntries(): ಕೀ-ಮೌಲ್ಯ ಜೋಡಿಗಳ ಪಟ್ಟಿಯನ್ನು ಆಬ್ಜೆಕ್ಟ್ ಆಗಿ ಪರಿವರ್ತಿಸುತ್ತದೆ.
- Optional Catch Binding: ಕ್ಯಾಚ್ ಬೈಂಡಿಂಗ್ ವೇರಿಯೇಬಲ್ ಅಗತ್ಯವಿಲ್ಲದಿದ್ದರೆ ಅದನ್ನು ಬಿಟ್ಟುಬಿಡಲು ಅನುಮತಿಸುತ್ತದೆ.
- Symbol.prototype.description: ಸಿಂಬಲ್ ಆಬ್ಜೆಕ್ಟ್ನ ಐಚ್ಛಿಕ ವಿವರಣೆಯನ್ನು ಹಿಂತಿರುಗಿಸುವ ಒಂದು ರೀಡ್-ಓನ್ಲಿ ಪ್ರಾಪರ್ಟಿ.
ಉದಾಹರಣೆ: ES2019 ರಲ್ಲಿ `Array.flat()` ಬಳಸುವುದು:
const nestedArray = [1, [2, [3, [4]]]];
const flattenedArray = nestedArray.flat(Infinity); // Flatten to infinite depth
console.log(flattenedArray); // Output: [1, 2, 3, 4]
ECMAScript 2020 (ES11)
- BigInt: ಅನಿಯಮಿತವಾಗಿ ದೊಡ್ಡ ಪೂರ್ಣಾಂಕಗಳನ್ನು ಪ್ರತಿನಿಧಿಸಲು ಹೊಸ ಪ್ರಿಮಿಟಿವ್ ಟೈಪ್.
- Dynamic Import(): ರನ್ಟೈಮ್ನಲ್ಲಿ ಡೈನಾಮಿಕ್ ಆಗಿ ಮಾಡ್ಯೂಲ್ಗಳನ್ನು ಇಂಪೋರ್ಟ್ ಮಾಡಲು ಅನುಮತಿಸುತ್ತದೆ.
- Nullish Coalescing Operator (??): ಎಡಭಾಗದ ಆಪರಾಂಡ್ null ಅಥವಾ undefined ಆಗಿದ್ದಾಗ ಬಲಭಾಗದ ಆಪರಾಂಡ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ.
- Optional Chaining Operator (?.): null ಅಥವಾ undefined ಮೌಲ್ಯಗಳಿಗಾಗಿ ಸ್ಪಷ್ಟವಾಗಿ ಪರಿಶೀಲಿಸದೆ ನೆಸ್ಟೆಡ್ ಆಬ್ಜೆಕ್ಟ್ ಪ್ರಾಪರ್ಟಿಗಳನ್ನು ಪ್ರವೇಶಿಸಲು ಅನುಮತಿಸುತ್ತದೆ.
- Promise.allSettled(): ನೀಡಲಾದ ಎಲ್ಲಾ ಪ್ರಾಮಿಸ್ಗಳು ಫುಲ್ಫಿಲ್ ಅಥವಾ ರಿಜೆಕ್ಟ್ ಆದ ನಂತರ ರಿಸಾಲ್ವ್ ಆಗುವ ಒಂದು ಪ್ರಾಮಿಸ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ, ಪ್ರತಿ ಪ್ರಾಮಿಸ್ನ ಫಲಿತಾಂಶವನ್ನು ವಿವರಿಸುವ ಆಬ್ಜೆಕ್ಟ್ಗಳ ಅರೇಯೊಂದಿಗೆ.
- globalThis: ವಿವಿಧ ಪರಿಸರಗಳಲ್ಲಿ (ಬ್ರೌಸರ್ಗಳು, Node.js, ಇತ್ಯಾದಿ) ಗ್ಲೋಬಲ್ ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು ಪ್ರವೇಶಿಸಲು ಒಂದು ಪ್ರಮಾಣಿತ ಮಾರ್ಗ.
ಉದಾಹರಣೆ: ES2020 ರಲ್ಲಿ ನಲಿಶ್ ಕೋಲೆಸಿಂಗ್ ಆಪರೇಟರ್ ಬಳಸುವುದು:
const name = null;
const displayName = name ?? "Guest";
console.log(displayName); // Output: Guest
ECMAScript 2021 (ES12)
- String.prototype.replaceAll(): ಸ್ಟ್ರಿಂಗ್ನಲ್ಲಿ ಸಬ್ಸ್ಟ್ರಿಂಗ್ನ ಎಲ್ಲಾ ಸಂಭವಿಸುವಿಕೆಗಳನ್ನು ಬದಲಾಯಿಸುತ್ತದೆ.
- Promise.any(): ಪ್ರಾಮಿಸ್ ಆಬ್ಜೆಕ್ಟ್ಗಳ ಇಟರೇಬಲ್ ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ ಮತ್ತು ಪ್ರಾಮಿಸ್ಗಳಲ್ಲಿ ಒಂದು ಫುಲ್ಫಿಲ್ ಆದ ತಕ್ಷಣ, ಆ ಪ್ರಾಮಿಸ್ನ ಮೌಲ್ಯದೊಂದಿಗೆ ರಿಸಾಲ್ವ್ ಆಗುವ ಒಂದೇ ಪ್ರಾಮಿಸ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ.
- AggregateError: ಒಂದೇ ಎರರ್ನಲ್ಲಿ ಸುತ್ತಿದ ಅನೇಕ ಎರರ್ಗಳನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ.
- Logical Assignment Operators (??=, &&=, ||=): ಲಾಜಿಕಲ್ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಅಸೈನ್ಮೆಂಟ್ನೊಂದಿಗೆ ಸಂಯೋಜಿಸುತ್ತದೆ.
- Numeric Separators: ಉತ್ತಮ ಓದುವಿಕೆಗಾಗಿ ಸಂಖ್ಯಾತ್ಮಕ ಲಿಟರಲ್ಗಳಲ್ಲಿ ಅಂಡರ್ಸ್ಕೋರ್ಗಳನ್ನು ವಿಭಜಕಗಳಾಗಿ ಬಳಸಲು ಅನುಮತಿಸುತ್ತದೆ.
ಉದಾಹರಣೆ: ES2021 ರಲ್ಲಿ ಸಂಖ್ಯಾತ್ಮಕ ವಿಭಜಕಗಳನ್ನು ಬಳಸುವುದು:
const largeNumber = 1_000_000_000; // One billion
console.log(largeNumber); // Output: 1000000000
ECMAScript 2022 (ES13)
- Top-Level Await: ಮಾಡ್ಯೂಲ್ಗಳಲ್ಲಿ ಅಸಿಂಕ್ ಫಂಕ್ಷನ್ಗಳ ಹೊರಗೆ `await` ಅನ್ನು ಬಳಸಲು ಅನುಮತಿಸುತ್ತದೆ.
- Class Fields: ಕ್ಲಾಸ್ ಫೀಲ್ಡ್ಗಳನ್ನು ನೇರವಾಗಿ ಕ್ಲಾಸ್ ಬಾಡಿಯಲ್ಲಿ ಡಿಕ್ಲೇರ್ ಮಾಡಲು ಅನುಮತಿಸುತ್ತದೆ.
- Static Class Fields and Methods: ಕ್ಲಾಸ್ಗಳಲ್ಲಿ ಸ್ಟ್ಯಾಟಿಕ್ ಫೀಲ್ಡ್ಗಳು ಮತ್ತು ಮೆಥಡ್ಗಳನ್ನು ಡಿಕ್ಲೇರ್ ಮಾಡಲು ಅನುಮತಿಸುತ್ತದೆ.
- Private Class Fields and Methods: ಕ್ಲಾಸ್ಗಳಲ್ಲಿ ಪ್ರೈವೇಟ್ ಫೀಲ್ಡ್ಗಳು ಮತ್ತು ಮೆಥಡ್ಗಳನ್ನು ಡಿಕ್ಲೇರ್ ಮಾಡಲು ಅನುಮತಿಸುತ್ತದೆ, ಇವು ಕ್ಲಾಸ್ನೊಳಗೆ ಮಾತ್ರ ಪ್ರವೇಶಿಸಬಹುದು.
- Error Cause: ಹೊಸ ಎರರ್ ಅನ್ನು ರಚಿಸುವಾಗ ಎರರ್ನ ಮೂಲ ಕಾರಣವನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಲು ಅನುಮತಿಸುತ್ತದೆ.
- `.at()` method for String, Array, and TypedArray: ನೆಗೆಟಿವ್ ಇಂಡೆಕ್ಸ್ಗಳನ್ನು ಬಳಸಿ ಸ್ಟ್ರಿಂಗ್/ಅರೇಯ ಅಂತ್ಯದಿಂದ ಎಲಿಮೆಂಟ್ಗಳನ್ನು ಪ್ರವೇಶಿಸಲು ಅನುಮತಿಸುತ್ತದೆ.
ಉದಾಹರಣೆ: ES2022 ರಲ್ಲಿ ಪ್ರೈವೇಟ್ ಕ್ಲಾಸ್ ಫೀಲ್ಡ್ಗಳನ್ನು ಬಳಸುವುದು:
class Counter {
#count = 0;
increment() {
this.#count++;
}
getCount() {
return this.#count;
}
}
const counter = new Counter();
counter.increment();
console.log(counter.getCount()); // Output: 1
// console.log(counter.#count); // Error: Private field '#count' must be declared in an enclosing class
ECMAScript 2023 (ES14)
- Array find from Last: `Array.prototype.findLast()` ಮತ್ತು `Array.prototype.findLastIndex()` ಮೆಥಡ್ಗಳು, ಅರೇಯ ಅಂತ್ಯದಿಂದ ಎಲಿಮೆಂಟ್ಗಳನ್ನು ಹುಡುಕುತ್ತವೆ.
- Hashbang Grammar: ಯುನಿಕ್ಸ್-ರೀತಿಯ ಪರಿಸರಗಳಲ್ಲಿ ಎಕ್ಸಿಕ್ಯೂಟಬಲ್ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಫೈಲ್ಗಳಿಗಾಗಿ ಶೆಬಾಂಗ್ (`#!`) ಸಿಂಟ್ಯಾಕ್ಸ್ ಅನ್ನು ಪ್ರಮಾಣೀಕರಿಸುತ್ತದೆ.
- Symbols as WeakMap Keys: ವೀಕ್ಮ್ಯಾಪ್ ಆಬ್ಜೆಕ್ಟ್ಗಳಲ್ಲಿ ಸಿಂಬಲ್ಗಳನ್ನು ಕೀಗಳಾಗಿ ಬಳಸಲು ಅನುಮತಿಸುತ್ತದೆ.
- Change Array by copy: ಅರೇಯ ಪ್ರತಿಯನ್ನು ಹಿಂತಿರುಗಿಸಲು ಹೊಸ ಬದಲಾಗದ ಅರೇ ಮೆಥಡ್ಗಳು: `toReversed()`, `toSorted()`, `toSpliced()`, `with()`.
ಉದಾಹರಣೆ: ES2023 ರಲ್ಲಿ toReversed ಬಳಸುವುದು:
const array = [1, 2, 3, 4, 5];
const reversedArray = array.toReversed();
console.log(array); // Output: [1, 2, 3, 4, 5] (original array is unchanged)
console.log(reversedArray); // Output: [5, 4, 3, 2, 1]
ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ನ ಭವಿಷ್ಯ
ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ವೇಗವಾಗಿ ವಿಕಸನಗೊಳ್ಳುತ್ತಲೇ ಇದೆ, ಪ್ರತಿ ವರ್ಷ ಹೊಸ ವೈಶಿಷ್ಟ್ಯಗಳು ಮತ್ತು ಸುಧಾರಣೆಗಳನ್ನು ಸೇರಿಸಲಾಗುತ್ತಿದೆ. ECMAScript ಮಾನಕೀಕರಣ ಪ್ರಕ್ರಿಯೆಯು ಭಾಷೆಯು ವೆಬ್ ಡೆವಲಪ್ಮೆಂಟ್ನ ನಿರಂತರವಾಗಿ ಬದಲಾಗುತ್ತಿರುವ ಅಗತ್ಯಗಳಿಗೆ ಪ್ರಸ್ತುತ ಮತ್ತು ಹೊಂದಿಕೊಳ್ಳುವಂತೆ ಉಳಿಯುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ. ಆಧುನಿಕ, ಪರಿಣಾಮಕಾರಿ ಮತ್ತು ನಿರ್ವಹಿಸಬಲ್ಲ ಕೋಡ್ ಬರೆಯಲು ಬಯಸುವ ಯಾವುದೇ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಡೆವಲಪರ್ಗೆ ಇತ್ತೀಚಿನ ECMAScript ವಿವರಣೆಗಳೊಂದಿಗೆ ನವೀಕೃತವಾಗಿರುವುದು ನಿರ್ಣಾಯಕವಾಗಿದೆ.
ಜಾಗತಿಕ ಡೆವಲಪರ್ಗಳಿಗಾಗಿ ಕಾರ್ಯಸಾಧ್ಯವಾದ ಒಳನೋಟಗಳು
- ಆಧುನಿಕ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಅಳವಡಿಸಿಕೊಳ್ಳಿ: ನಿಮ್ಮ ಪ್ರಾಜೆಕ್ಟ್ಗಳಲ್ಲಿ ES6+ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಬಳಸಲು ಪ್ರಾರಂಭಿಸಿ. ಬಾಬೆಲ್ನಂತಹ ಪರಿಕರಗಳು ನಿಮ್ಮ ಕೋಡ್ ಅನ್ನು ಹಳೆಯ ಪರಿಸರಗಳಿಗೆ ಟ್ರಾನ್ಸ್ಪೈಲ್ ಮಾಡಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.
- ನವೀಕೃತರಾಗಿರಿ: ಇತ್ತೀಚಿನ ECMAScript ಪ್ರಸ್ತಾಪಗಳು ಮತ್ತು ವಿವರಣೆಗಳನ್ನು ಗಮನಿಸುತ್ತಿರಿ. TC39 ಗಿಟ್ಹಬ್ ರೆಪೊಸಿಟರಿ ಮತ್ತು ECMAScript ವಿವರಣೆಯಂತಹ ಸಂಪನ್ಮೂಲಗಳು ಅಮೂಲ್ಯವಾಗಿವೆ.
- ಲಿಂಟರ್ಗಳು ಮತ್ತು ಕೋಡ್ ಫಾರ್ಮ್ಯಾಟರ್ಗಳನ್ನು ಬಳಸಿ: ESLint ಮತ್ತು ಪ್ರಿಟಿಯರ್ನಂತಹ ಪರಿಕರಗಳು ಉತ್ತಮ ಅಭ್ಯಾಸಗಳಿಗೆ ಬದ್ಧವಾಗಿರುವ ಸ್ವಚ್ಛ, ಹೆಚ್ಚು ಸ್ಥಿರವಾದ ಕೋಡ್ ಬರೆಯಲು ನಿಮಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ.
- ಪರೀಕ್ಷೆಗಳನ್ನು ಬರೆಯಿರಿ: ನಿಮ್ಮ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಕೋಡ್ನ ಗುಣಮಟ್ಟ ಮತ್ತು ವಿಶ್ವಾಸಾರ್ಹತೆಯನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಯುನಿಟ್ ಪರೀಕ್ಷೆಗಳು ಮತ್ತು ಇಂಟಿಗ್ರೇಶನ್ ಪರೀಕ್ಷೆಗಳು ಅತ್ಯಗತ್ಯ.
- ಸಮುದಾಯಕ್ಕೆ ಕೊಡುಗೆ ನೀಡಿ: ಆನ್ಲೈನ್ ಫೋರಮ್ಗಳಲ್ಲಿ ಭಾಗವಹಿಸಿ, ಸಮ್ಮೇಳನಗಳಿಗೆ ಹಾಜರಾಗಿ, ಮತ್ತು ಪ್ರಪಂಚದಾದ್ಯಂತದ ಇತರ ಡೆವಲಪರ್ಗಳಿಂದ ಕಲಿಯಲು ಮತ್ತು ನಿಮ್ಮ ಜ್ಞಾನವನ್ನು ಹಂಚಿಕೊಳ್ಳಲು ಓಪನ್-ಸೋರ್ಸ್ ಪ್ರಾಜೆಕ್ಟ್ಗಳಿಗೆ ಕೊಡುಗೆ ನೀಡಿ.
ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ನ ಇತಿಹಾಸ ಮತ್ತು ವಿಕಸನವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವ ಮೂಲಕ, ನೀವು ಭಾಷೆ ಮತ್ತು ಅದರ ಸಾಮರ್ಥ್ಯಗಳ ಬಗ್ಗೆ ಆಳವಾದ ಮೆಚ್ಚುಗೆಯನ್ನು ಪಡೆಯಬಹುದು, ಮತ್ತು ಜಾಗತಿಕ ಪ್ರೇಕ್ಷಕರಿಗಾಗಿ ನವೀನ ಮತ್ತು ಪರಿಣಾಮಕಾರಿ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ನಿರ್ಮಿಸಲು ನೀವು ಉತ್ತಮವಾಗಿ ಸಜ್ಜಾಗಬಹುದು.