← Back to JavaScript Course | Chapter 12: Reference & Interview | Lesson 7 of 9

JS वर्शन्स

JavaScript अपने standardize होने के बाद से काफी बदल चुका है -- बड़े releases, सबसे खास तौर पर ES5 (2009) और ES6/ES2015, ने इस language के लिखे जाने के तरीके में बुनियादी बदलाव लाए, जिसके बाद तभी से हर साल छोटे releases आते रहे हैं। मोटे तौर पर यह जानना कि कौन सा feature किस version में आया, browser compatibility समझने और यह समझने में मदद करता है कि कुछ code दूसरे code से इतना अलग क्यों दिखता है।

'ECMAScript' का मतलब क्या है

JavaScript वह language है जिसके लिए ज़्यादातर लोग इस नाम का इस्तेमाल करते हैं, पर ECMAScript असली official specification है जो तय करती है कि JavaScript को क्या करना चाहिए -- ES5, ES6, और ES2015 जैसे version नाम सब उस specification के खास releases को refer करते हैं, जिन्हें फिर browser vendors लागू करते हैं।

Note: जब आप "ES6" और "ES2015" को बारी-बारी से इस्तेमाल होते देखें, तो जानें कि वे बिल्कुल एक ही release को refer करते हैं -- ES6 बस पुरानी naming convention है।
Warning: हर browser किसी दिए गए ECMAScript version के हर हिस्से को बिल्कुल एक ही समय पर लागू नहीं करता -- किसी भी cutting-edge चीज़ के लिए असली browser support जांचना मायने रखता है (spec release date के आधार पर मान लेने के बजाय)।

उदाहरण: What 'ECMAScript' Means

javascript
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 लिखने का मतलब रखता है।

Note: ES6 को उस release के रूप में पहचानें जिसने रोज़मर्रा के JavaScript syntax को सबसे ज़्यादा फिर से आकार दिया -- ज़्यादातर "modern JavaScript" guides और style conventions कम से कम ES6 को baseline मानती हैं।
Warning: पूरी तरह pre-ES6 style में लिखा गया code (var, arrow functions के बजाय function expressions, कोई destructuring नहीं) गलत नहीं है, पर ज़्यादातर current tutorials और codebases से काफी अलग पढ़ने में आता है।

उदाहरण: The Major Milestones: ES5 and ES6

javascript
[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 जोड़ता है।

Note: ES6 के बाद के releases को major rewrites के बजाय steady, incremental additions की तरह सोचें -- हर साल language के आकार को मूल रूप से बदले बिना उपयोगी नए tools जोड़ता है।
Warning: बहुत हाल ही में release हुए features browser support में पीछे रह सकते हैं, खासतौर पर पुराने या कम अपडेट होने वाले browsers में -- सबसे नए additions के लिए असली current support जांचना अभी भी सही है।

उदाहरण: Yearly Releases Since ES6

javascript
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 की ज़रूरत है या नहीं।

Note: पुराने browsers (या किसी अज्ञात, व्यापक audience) को target करते समय, कुछ साल से नए किसी भी feature पर सीधे निर्भर होने से पहले एक compatibility table जांचें।
Warning: बिना जांचे यह मान लेना कि कोई feature "अब तक supported होना ही चाहिए" पुराने browsers या devices पर users को प्रभावित करने वाले production bugs का एक आम कारण है।

उदाहरण: Checking Browser Support for a Feature

javascript
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 लिखने देते हैं।

Note: एक transpiler/polyfill setup का इस्तेमाल खासतौर पर तब करें जब आपने यह पुष्टि कर ली हो कि उन browsers को support करने की असली ज़रूरत है जिनमें आपके चाहे features का native support नहीं है।
Warning: पुराने browsers को support करने की किसी असली जानी-पहचानी ज़रूरत के बिना, सिर्फ आदत से एक पूरा transpilation pipeline जोड़ना बिना किसी असली फायदे के build complexity बढ़ाता है।

उदाहरण: Using Tools to Support Older Browsers

javascript
console.log("Babel transpiles modern syntax; core-js polyfills missing built-ins.");
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
आम गलतियां
  1. यह मान लेना कि हर JavaScript feature हर browser में काम करता है, यह check किए बिना कि वह specific feature आपके target audience के browsers में reliably support होने लायक पुराना (या नया) है या नहीं।
  2. JavaScript को ECMAScript से confuse करना -- ECMAScript वह official language specification है जिसे JavaScript implement करती है, और version names (ES5, ES6, ES2020) उस specification को refer करते हैं।
  3. बहुत पुराने 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:

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.