JS वर्शन्स
In this page:
'ECMAScript' का मतलब क्या है
JavaScript वह language है जिसके लिए ज़्यादातर लोग इस नाम का इस्तेमाल करते हैं, पर ECMAScript असली official specification है जो तय करती है कि JavaScript को क्या करना चाहिए -- ES5, ES6, और ES2015 जैसे version नाम सब उस specification के खास releases को refer करते हैं, जिन्हें फिर browser vendors लागू करते हैं।
उदाहरण: What 'ECMAScript' Means
console.log("ES6", "ES2015"); // same release, two common names
बड़े Milestones: ES5 और ES6
ES5 (2009) ने strict mode और array methods (forEach, map, filter) जैसे बुनियादी features को standardize किया।
ES6/ES2015 एक कहीं बड़ा release था, जिसने let/const, arrow functions, classes, template literals, destructuring, promises, और modules पेश किए -- इतने महत्वपूर्ण बदलाव कि 'modern JavaScript लिखना' आमतौर पर ES6-style code लिखने का मतलब रखता है।
उदाहरण: The Major Milestones: ES5 and ES6
[1, 2, 3].forEach(n => console.log(n)); // ES5
const double = n => n * 2; // ES6/ES2015
console.log(double(5));
ES6 के बाद के Yearly Releases
ES6/ES2015 के बाद से, ECMAScript एक yearly release cadence पर shift हो गया है -- ES2016 ने exponentiation operator (**) और Array.includes() जोड़ा, ES2017 ने async/await जोड़ा, ES2020 ने optional chaining और nullish coalescing जोड़ा, वगैरह -- हर release एक sweeping overhaul के बजाय छोटे, ज़्यादा targeted features जोड़ता है।
उदाहरण: Yearly Releases Since ES6
console.log(2 ** 3); // ES2016: exponentiation operator
console.log([1, 2].includes(2)); // ES2016: Array.includes()
// ES2017 added async/await, ES2020 added ?. and ??
किसी Feature के लिए Browser Support जांचना
किसी व्यापक audience के लिए बने production code में किसी खास JavaScript feature पर निर्भर होने से पहले, एक compatibility reference जांचना (जैसे "Can I use" website या MDN की browser compatibility tables) यह पुष्टि करता है कि आपके target browsers इसे असल में support करते हैं या नहीं, या किसी fallback या transpiler की ज़रूरत है या नहीं।
उदाहरण: Checking Browser Support for a Feature
console.log(typeof Array.prototype.at); // check support before relying on newer methods
पुराने Browsers Support करने के लिए Tools इस्तेमाल करना
Transpilers (जैसे Babel) modern JavaScript syntax को एक पुराने, ज़्यादा व्यापक रूप से supported equivalent में बदल देते हैं, और polyfills उन पुराने environments में गायब built-in functions जोड़ देते हैं जिनमें वे नहीं हैं -- साथ में, ये tools developers को पुराने browsers पर audiences को support करते हुए भी modern code लिखने देते हैं।
उदाहरण: Using Tools to Support Older Browsers
console.log("Babel transpiles modern syntax; core-js polyfills missing built-ins.");
- यह मान लेना कि हर JavaScript feature हर browser में काम करता है, यह check किए बिना कि वह specific feature आपके target audience के browsers में reliably support होने लायक पुराना (या नया) है या नहीं।
- JavaScript को ECMAScript से confuse करना -- ECMAScript वह official language specification है जिसे JavaScript implement करती है, और version names (ES5, ES6, ES2020) उस specification को refer करते हैं।
- बहुत पुराने patterns (जैसे var-based scoping) को बहुत नए patterns के साथ inconsistently मिलाना, बिना किसी साफ कारण के, जिससे codebase पढ़ना मुश्किल हो जाता है।
- ECMAScript वह official specification है जिसे JavaScript implement करती है; version numbers (ES5, ES6/ES2015, ES2016, और आगे) उस specification के specific releases को refer करते हैं।
- ES5 (2009) और ES6/ES2015 सबसे significant releases हैं, हर एक ने ऐसे बदलाव लाए जिन्होंने JavaScript लिखने के common तरीके को reshape किया।
- ES6 के बाद से, नए features लगभग हर साल release हुए हैं (ES2016, ES2017, वगैरह), हर एक छोटी, incremental capabilities जोड़ते हुए।
Modern browsers ES2015 (ES6) और ज़्यादातर बाद के yearly releases को natively support करते हैं; ES5 support अभी भी active इस्तेमाल हो रहे हर browser में प्रभावी रूप से universal है।
Chapter Quiz — Complete all 9 topics to unlock
0/9 topics done
Complete these topics first: