تاريخ إصدارات ECMAScript
ECMAScript هو معيار جافا سكريبت تم تطويره بواسطة Ecma International . ومنذ عام 2015، يتم نشر إصدارات رئيسية منه كل شهر يونيو.
تم إصدار ECMAScript 2025، الإصدار السادس عشر والحالي، في يونيو 2025.
الإصدارات
| طبعة | تاريخ النشر | اسم | التغييرات عن الطبعة السابقة | محرر |
|---|---|---|---|---|
| 1 | يونيو 1997 | الطبعة الأولى مبنية على JavaScript 1.1 كما تم تطبيقها في Netscape Navigator 3.0. [ 1 ] | جاي إل. ستيل الابن | |
| 2 | يونيو 1998 | تغييرات تحريرية للحفاظ على توافق المواصفات بشكل كامل مع ISO/IEC 16262:1998. | مايك كوليشو | |
| 3 | ديسمبر 1999 | مبني على JavaScript 1.2 كما هو مُطبق في متصفح Netscape Navigator 4.0. [ 2 ] تمت إضافة التعابير النمطية ، ومعالجة أفضل للسلاسل النصية، وعبارات تحكم جديدة، ومعالجة استثناءات try/catch، وتعريف أدق للأخطاء، وتنسيق للمخرجات الرقمية، وتحسينات أخرى. | مايك كوليشو | |
| 4 | تم التخلي عنه (آخر مسودة بتاريخ 30 يونيو 2003) | ECMAScript 4 (ES4) | تم التخلي عن الطبعة الرابعة بسبب خلافات سياسية تتعلق بتعقيد اللغة. وقد تم حذف العديد من الميزات المقترحة للطبعة الرابعة بالكامل؛ بينما تم دمج بعضها في الطبعة السادسة. | |
| 5 | ديسمبر 2009 | ECMAScript 5 (ES5) | يُضيف هذا الإصدار "الوضع الصارم"، وهو مجموعة فرعية تهدف إلى توفير فحص أكثر شمولاً للأخطاء وتجنب البنى المعرضة لها. كما يُوضح العديد من أوجه الغموض في مواصفات الإصدار الثالث، ويُراعي سلوك التطبيقات العملية التي اختلفت باستمرار عن تلك المواصفات. ويُضيف بعض الميزات الجديدة، مثل دوال الوصول والتعديل ، ودعم المكتبة لـ JSON ، وانعكاسًا أكثر اكتمالًا لخصائص الكائنات. [ 3 ] | براتاب لاكشمان، ألين ويرفس-بروك |
| 5.1 | يونيو 2011 | تغييرات للحفاظ على توافق المواصفات بشكل كامل مع معيار ISO/IEC 16262:2011 . | براتاب لاكشمان، ألين ويرفس-بروك | |
| 6 | يونيو 2015 [ 4 ] | ECMAScript 2015 (ES2015) | انظر الطبعة السادسة – ECMAScript 2015 | ألين ويرفس-بروك |
| 7 | يونيو 2016 [ 5 ] | ECMAScript 2016 (ES2016) | انظر الطبعة السابعة – ECMAScript 2016 | برايان تيرلسون |
| 8 | يونيو 2017 [ 6 ] | ECMAScript 2017 (ES2017) | انظر الطبعة الثامنة – ECMAScript 2017 | برايان تيرلسون |
| 9 | يونيو 2018 [ 7 ] | ECMAScript 2018 (ES2018) | انظر الطبعة التاسعة – ECMAScript 2018 | برايان تيرلسون |
| 10 | يونيو 2019 [ 8 ] | ECMAScript 2019 (ES2019) | انظر الإصدار العاشر – ECMAScript 2019 | برايان تيرلسون، برادلي فارياس، جوردان هارباند |
| 11 | يونيو 2020 [ 9 ] | ECMAScript 2020 (ES2020) | انظر الإصدار الحادي عشر – ECMAScript 2020 | جوردان هارباند، كيفن سميث |
| 12 | يونيو 2021 [ 10 ] | ECMAScript 2021 (ES2021) | انظر الإصدار رقم 12 – ECMAScript 2021 | جوردان هارباند، شو يو جو، مايكل فيكارا، كيفن جيبونز |
| 13 | يونيو 2022 [ 11 ] | ECMAScript 2022 (ES2022) | انظر الإصدار رقم 13 – ECMAScript 2022 | شو يو جو، مايكل فيكارا، كيفن جيبونز |
| 14 | يونيو 2023 [ 12 ] | ECMAScript 2023 (ES2023) | انظر الإصدار رقم 14 – ECMAScript 2023 | شو يو جو، مايكل فيكارا، كيفن جيبونز |
| 15 | يونيو 2024 [ 13 ] | ECMAScript 2024 (ES2024) | انظر الطبعة الخامسة عشرة – ECMAScript 2024 | شو يو جو، مايكل فيكارا، كيفن جيبونز |
| 16 | يونيو 2025 [ 14 ] | ECMAScript 2025 (ES2025) | انظر الإصدار رقم 16 – ECMAScript 2025 | شو يو جو، مايكل فيكارا، كيفن جيبونز |
| 17 | (قيد الانتظار) | ECMAScript 2026 (ES2026) | قيد الانتظار، انظر الميزات قيد الدراسة: #ES.Next | (قيد الانتظار) |
في يونيو 2004، نشرت منظمة إيكما الدولية معيار ECMA-357، الذي يُعرّف امتدادًا للغة ECMAScript، يُعرف باسم ECMAScript لـ XML (E4X). كما عرّفت إيكما "ملفًا تعريفيًا مضغوطًا" للغة ECMAScript - يُعرف باسم ES-CP، أو ECMA 327 - والذي صُمم للأجهزة ذات الموارد المحدودة، وتم سحبه في عام 2015. [ 15 ]
الطبعة الرابعة (مهجورة)
كان من المفترض أن تكون الطبعة الرابعة المقترحة من معيار ECMA-262 ( ECMAScript 4 أو ES4 ) أول تحديث رئيسي للغة ECMAScript منذ نشر الطبعة الثالثة عام 1999. وكان من المقرر في الأصل الانتهاء من المواصفات (إلى جانب تطبيق مرجعي) بحلول أكتوبر 2008. [ 16 ] ويعود تاريخ المسودة الأولى إلى فبراير 1999. [ 17 ] وقد أصدر فريق العمل نظرة عامة على اللغة في 23 أكتوبر 2007. [ 18 ]
بحلول أغسطس 2008، تم تقليص نطاق اقتراح الإصدار الرابع من ECMAScript ليصبح مشروعًا يحمل اسم ECMAScript Harmony . وشملت الميزات التي كانت قيد المناقشة في Harmony آنذاك ما يلي: [ 19 ]
- صفوف ،
- نظام معياري ،
- التعليقات التوضيحية الاختيارية للأنواع والكتابة الثابتة ، وربما باستخدام نظام أنواع هيكلي .
- المولدات والمكررات ،
- تخصيص التفكيك ، و
- أنواع البيانات الجبرية .
كان الهدف من هذه الميزات جزئيًا هو تحسين دعم البرمجة في بيئات واسعة النطاق ، والسماح بالتضحية ببعض مرونة البرنامج النصي لتحسين الأداء. على سبيل المثال، يوفر Tamarin - الآلة الافتراضية للغة ActionScript، التي طورتها شركة Adobe ونشرتها كمصدر مفتوح - دعمًا للترجمة الفورية (JIT) لأنواع معينة من البرامج النصية.
إضافةً إلى تقديم ميزات جديدة، اقتُرح إصلاح بعض أخطاء ES3 في الإصدار الرابع. [ 20 ] [ 21 ] وقد أُدمجت هذه الإصلاحات وغيرها، بالإضافة إلى دعم ترميز/فك ترميز JSON ، في مواصفات ECMAScript، الإصدار الخامس. [ 22 ]
بدأ العمل على الإصدار الرابع بعد اكتمال مواصفات ES-CP (الملف التعريفي المضغوط)، واستمر لمدة 18 شهرًا تقريبًا، حيث تم إحراز تقدم بطيء في الموازنة بين نظرية مواصفات جافا سكريبت 2 من نتسكيب وخبرة تطبيق جافا سكريبت دوت نت من مايكروسوفت . بعد فترة، تحول التركيز إلى معيار ECMAScript لـ XML (E4X). لم يخلُ التحديث من الجدل. ففي أواخر عام 2007، انتشر نقاش علني على عدد من المدونات بين إيتش، الذي أصبح لاحقًا المدير التقني لمؤسسة موزيلا ، وكريس ويلسون، مهندس منصة إنترنت إكسبلورر في مايكروسوفت . حذر ويلسون من أن التغييرات المقترحة على ECMAScript تجعلها غير متوافقة مع الإصدارات السابقة من اللغة في بعض الجوانب، وأن التحديث يرقى إلى "تعطيل الويب" [ 23 ] ، وأن أصحاب المصلحة المعارضين لهذه التغييرات يتم "إخفاؤهم عن الأنظار". [ 24 ] ردّ إيتش بالقول إن ويلسون يبدو أنه "يكرر أكاذيب في مدوناته"، ونفى وجود أي محاولة لقمع المعارضة، وتحدى النقاد بتقديم أمثلة محددة على عدم التوافق. [ 25 ] وأشار إلى أن مايكروسوفت سيلفرلايت وأدوبي إير يعتمدان على لغة سي شارب ولغة أكشن سكريبت 3 على التوالي، وكلاهما أكبر حجمًا وأكثر تعقيدًا من إي سي إم إيه سكريبت الإصدار 3. [ 26 ]
يُقدّم ECMAScript 4 نظامًا صارمًا لتحديد أنواع البيانات. على سبيل المثال، قد تبدو الدالة add()كما يلي: [ 27 ]
دالة الجمع ( أ : عدد صحيح ، ب : عدد صحيح ) : عدد صحيح { إرجاع أ + ب ؛ }تم تعريف الأنواع الأولية التالية: [ 27 ]
BooleanNullNumberObjectStringbytedecimaldoubleintuintvoid
يمكن أن تحتوي المتغيرات على المُعدِّلات التالية:
static: يجعل المتغير متغيرًا من نوع الفئةprototype: يضيف متغيرًا إلى كائن النموذج الأولي للفئة، مع دالة وصول get/set
تم إعطاء الفئات المعدلات التالية:
dynamic: يسمح بإضافة خصائص إلى النسخ أثناء التشغيلfinalلا يمكن توسيعها بواسطة فئات أخرىinternal: مرئي فقط للمراجع الموجودة في الحزمة الحاليةpublicمرئي للمراجع عالميًا
تم تعريف مُنشئات الفئات باستخدام functionالكلمة المفتاحية (بدلاً من constructor)، وأخذت اسم الفئة نفسها: [ 27 ]
class X { private var value : int ;public function X ( i : int ) { value = i ; } }تم تعريف طرق الجلب والتعيين أيضًا باستخدام الكلمات المفتاحية getو set: [ 27 ]
class X { private var _value : int ;دالة get value () : int { return _value ; }دالة تعيين القيمة ( n : عدد صحيح ) : لا شيء { _القيمة = n ؛ } }var x : X = new X (); x . value = 10 ;يمكن أن تحتوي الدوال على المُعدِّلات التالية:
staticيجعل هذا الخاصية الدالة سمة من سمات الفئة، بدلاً من كونها نسخة منها (أي طريقة ثابتة ).final: يُعلن أنه لا يمكن تجاوز دالةoverride: يتجاوز طريقة تحمل نفس الاسم والتوقيعnative: يُعلن عن دالة على أنها "محددة من قبل التنفيذ"
تم تقديم الواجهات ، والتي، على غرار واجهات جافا ، تحدد عقدًا بين مثيل ورمز يستهلكه. [ 27 ]
واجهة التحيات { دالة hello () : void ; دالة goodMorning () : void ; }class Greeter implements Greetings { public function hello () : void { print ( "Hello, world!" ); }public function goodMorning () : void { print ( "صباح الخير يا عالم!" ); } }var greeter : Greetings = new Greeter (); greeter . hello ();أضافت ECMAScript 4 ميزة الحزم، التي تعمل كحزم في Java أو مساحات أسماء في C++ و C# . بالإضافة إلى ذلك، كانت "الحزمة غير المسماة" بمثابة مساحة الاسم العامة، والتي يتم استيرادها ضمنيًا بواسطة جميع الحزم الأخرى (ويتم تحديدها بواسطة ). [ 27 ]package{/* ... */}
package org.wikipedia { public class Article extends WikiObject { // ... } }استيراد org.wikipedia.* ; // يضيف كل الرموز من org.wikipedia إلى النطاق import org.wiktionary.Language ; // يضيف النوع "org.wiktionary.Language" إلى النطاقفي هذا المثال، Articleيكون الاسم المؤهل بالكامل هو org.wikipedia.Article. بينما تتميز لغة ECMAScript الحديثة بالوحدات النمطية، فإن حزم ECMAScript 4 كانت تتصرف بشكل أشبه بنظام تسمية عام، على غرار تلك الموجودة في Java.
كانت مساحات الأسماء موجودة أيضًا كميزة منفصلة عن الحزم، وكانت بمثابة مُحدِّد لاسم التعريف. [ 27 ]
package org.wikipedia.examples { public namespace English ; public namespace French ; }public class BilingualGreeter { English function hello () : void { console . log ( "Hello, world!" ); }الوظيفة الفرنسية hello () : void { console . سجل ( "مرحبا، لوموند!" )؛ } } }import org.wikipedia.examples.BilingualGreeter ;var greeter : BilingualGreeter = new BilingualGreeter (); use namespace English ; // إضافة جميع مُعرّفات مساحة الاسم الإنجليزية إلى النطاقgreeter.hello ( ) ; // يستدعي النسخة الإنجليزية greeter.French :: hello ( ); // يستدعي النسخة الفرنسيةالطبعة الخامسة - ECMAScript 2009
شكّلت ياهو ومايكروسوفت وجوجل، بالإضافة إلى معارضين آخرين للإصدار الرابع، لجنة فرعية لتصميم تحديث أقل طموحًا لمعيار ECMAScript 3، أُطلق عليه مبدئيًا اسم ECMAScript 3.1. ويركز هذا الإصدار على تحديثات الأمان والمكتبات، مع التركيز بشكل كبير على التوافق. بعد النقاش العلني المذكور آنفًا، اتفق فريقا ECMAScript 3.1 وECMAScript 4 على حل وسط: العمل على الإصدارين بالتوازي، مع التنسيق بين الفريقين لضمان بقاء ECMAScript 3.1 جزءًا لا يتجزأ من ECMAScript 4 من حيث الدلالات والنحو.
مع ذلك، أدت الاختلافات في فلسفات كل فريق إلى انتهاكات متكررة لقاعدة المجموعة الفرعية، وظل من المشكوك فيه أن يدعم معارضو ECMAScript 4 أو يطبقوا ECMAScript 4 في المستقبل. بعد مرور أكثر من عام على الخلاف حول مستقبل ECMAScript داخل اللجنة الفنية 39 التابعة لـ Ecma، توصل الفريقان إلى حل وسط جديد في يوليو 2008: أعلن بريندان إيتش أن اللجنة الفنية 39 ستركز عملها على مشروع ECMAScript 3.1 (الذي أعيدت تسميته لاحقًا إلى ECMAScript، الإصدار الخامس) بالتعاون الكامل مع جميع الأطراف، وأن الموردين سيستهدفون تطبيقين متوافقين على الأقل بحلول أوائل عام 2009. [ 28 ] [ 29 ] في أبريل 2009، نشرت اللجنة الفنية 39 المسودة "النهائية" للإصدار الخامس، وأعلنت أنه من المتوقع الانتهاء من اختبار التطبيقات المتوافقة بحلول منتصف يوليو. [ 30 ] في 3 ديسمبر 2009، نُشرت الطبعة الخامسة من معيار ECMA-262. [ 31 ]
تتضمن الإضافات JSON ، String.trim()لإزالة المسافات البيضاء المحيطة بسلسلة نصية بسهولة ( " example "إلى "example")، String.charAt()ولإرجاع حرف واحد من موضع معين في سلسلة نصية، و Array.isArray(). كما أن الفاصلة بعد الزوج الأخير من القيم في كائن ( var example = { "property1":"value1", "property2":"value2", }) لم تعد تتسبب في خطأ في بناء الجملة. [ 32 ]
الطبعة السادسة - ECMAScript 2015
صدرت النسخة السادسة، ECMAScript 6 ( ES6 )، والتي أعيد تسميتها لاحقًا إلى ECMAScript 2015، في يونيو 2015. [ 4 ] [ 33 ] يُضيف هذا التحديث بنيةً جديدةً هامةً لكتابة التطبيقات المعقدة، بما في ذلك تعريفات الفئات (class-class )، ووحدات ES6 مثل `class-class` ، ولكنه يُعرّفها دلاليًا بنفس مصطلحات الوضع الصارم في ECMAScript 5. تشمل الميزات الجديدة الأخرى المُكرِّرات والحلقات ، والمولدات على نمط بايثون ، وتعبيرات دوال الأسهم (arrow-function )، والكلمة المفتاحية `include` للتعريفات المحلية، والكلمة المفتاحية `include` للتعريفات المحلية الثابتة، والبيانات الثنائية، والمصفوفات المُحددة النوع، والمجموعات الجديدة (الخرائط، والمجموعات، وWeakMap)، والوعود ، وتحسينات الأرقام والرياضيات، والانعكاس، والوكلاء (البرمجة الوصفية للكائنات الافتراضية والأغلفة)، والقوالب الحرفية باستخدام علامات التنصيص الخلفية (backtick ) للسلاسل النصية متعددة الأسطر بدون أحرف هروب . [ 34 ] [ 35 ] القائمة الكاملة شاملة. [ 36 ] [ 37 ] باعتبارها أول مواصفات "ECMAScript Harmony"، فهي تُعرف أيضًا باسم "ES6 Harmony".classFoo{...}import*asmoduleNamefrom"...";exportconstFoofor...of()=>{...}letconst`
الطبعة السابعة - ECMAScript 2016
صدرت النسخة السابعة، أو ECMAScript 2016، في يونيو 2016. [ 5 ] تتضمن ميزاتها عامل الأس **للأعداد، awaitوكلمات asyncمفتاحية للبرمجة غير المتزامنة (كتمهيد لـ ES2017)، والدالة Array.prototype.includes. [ 5 ] عامل الأس مكافئ لـ Math.pow، ولكنه يوفر بنية أبسط تشبه لغات مثل بايثون، وإف شارب، وبيرل، وروبي. وقد لاقت async/ awaitاستحسانًا باعتبارها طريقة أسهل لاستخدام الوعود وتطوير التعليمات البرمجية غير المتزامنة.
الطبعة الثامنة - ECMAScript 2017
تم الانتهاء من الإصدار الثامن، أو ECMAScript 2017، في يونيو 2017. [ 6 ] تتضمن ميزاته Object.valuesوظائف لتسهيل التعامل مع الكائنات، وبنى تستخدم المولدات والوعود، وميزات إضافية للتزامن والعمليات الذرية . كما يتضمن أيضًا [ 38 ] [ 6 ]Object.entriesObject.getOwnPropertyDescriptorsasyncawaitString.prototype.padStart()
الطبعة التاسعة - ECMAScript 2018
تم الانتهاء من الإصدار التاسع، أو ECMAScript 2018، في يونيو 2018. [ 7 ] تشمل الميزات الجديدة عامل النشر ومعاملات الراحة ( ...) للكائنات الحرفية، والتكرار غير المتزامن، Promise.prototype.finallyوإضافات إلى التعبيرات النمطية. [ 7 ]
تتيح أداة النشر نسخ خصائص الكائن بسهولة، كما هو موضح أدناه.
let object = { a : 1 , b : 2 }let objectClone = Object.assign ({ } , object ) // قبل ES2018 let objectClone = { ... object } // صيغة ES2018let otherObject = { c : 3 , ... object } console . log ( otherObject ) // -> {c: 3, a: 1, b: 2}الطبعة العاشرة - ECMAScript 2019
صدرت الطبعة العاشرة، أو ECMAScript 2019، في يونيو 2019. [ 8 ] تشمل الميزات المضافة، على سبيل المثال لا الحصر، Array.prototype.flatتغييرات Array.prototype.flatMapعلى [8] Array.sortو [8] Object.fromEntries. [ 8 ]
Array.sortيضمن الآن استقرار العملية ، مما يعني أن العناصر ذات مفاتيح الفرز المتساوية لن يتغير ترتيبها النسبي قبل عملية الفرز وبعدها. Array.prototype.flat(depth=1)تُسطّح هذه العملية المصفوفة إلى عمق محدد، مما يعني أنه يتم دمج جميع عناصر المصفوفة الفرعية (حتى العمق المحدد) بشكل متكرر.
ومن التغييرات الملحوظة الأخرى أن ما يسمى بربط الالتقاط أصبح اختيارياً. [ 39 ]
الطبعة الحادية عشرة - ECMAScript 2020
صدرت الطبعة الحادية عشرة، أو ECMAScript 2020، في يونيو 2020. [ 9 ] بالإضافة إلى الدوال الجديدة، يقدم هذا الإصدار BigIntنوعًا بدائيًا للأعداد الصحيحة ذات الأحجام العشوائية، وعامل دمج القيم الفارغة ، وكائن globalThis . [ 9 ]
يتم إنشاء الأعداد الصحيحة الكبيرة (BigInt) إما باستخدام BigIntالدالة البانية أو باستخدام الصيغة 10n`n`، حيث يُوضع الحرف "n" بعد العدد. تسمح الأعداد الصحيحة الكبيرة بتمثيل ومعالجة الأعداد الصحيحة التي تتجاوز 64 بت، بينما تُمثل الأعداد بقيمة IEEE 754Number.MAX_SAFE_INTEGER ذات دقة مزدوجة 64 بت . الدوال المضمنة في `n` غير متوافقة مع الأعداد الصحيحة الكبيرة؛ على سبيل المثال، يجب إجراء عملية الأسس للأعداد الصحيحة الكبيرة باستخدام المعامل `n` بدلاً من `n` .Math**Math.pow
يُعيد عامل الدمج شبه الصفري، ??، قيمة معامله الأيمن عندما يكون معامله الأيسر صفرًا nullأو صفرًا undefined. وهذا يختلف عن ||العامل ، الذي يُعيد "string"قيمة لجميع القيم "الخاطئة"، مثل القيم المذكورة أدناه.
غير مُعرَّف ?? "سلسلة نصية" // -> "سلسلة نصية" فارغ ?? "سلسلة نصية" // -> "سلسلة نصية" خطأ ?? "سلسلة نصية" // -> خطأ NaN ?? "سلسلة نصية" // -> NaNتتيح خاصية التسلسل الاختياري الوصول إلى الخصائص المتداخلة للكائن دون الحاجة إلى التحقق من وجود خاصية "و" في كل مستوى. على سبيل المثال const zipcode = person?.address?.zipcode، إذا لم تكن أي من الخصائص موجودة، zipcodeفستكون النتيجة "لا" undefined.
الطبعة الثانية عشرة - ECMAScript 2021
صدرت الطبعة الثانية عشرة، ECMAScript 2021، في يونيو 2021. [ 10 ] يقدم هذا الإصدار replaceAllطريقة للتعامل مع السلاسل النصية؛ Promise.anyودالة دمج الوعود التي تتوقف عند تحقق قيمة الإدخال؛ AggregateErrorونوع خطأ جديد لتمثيل أخطاء متعددة في آن واحد؛ وعوامل إسناد منطقية ( ??=،، )؛ ودالة للإشارة إلى كائن مستهدف دون حفظه من عملية جمع البيانات المهملة؛ ودالة لإدارة تسجيل وإلغاء تسجيل عمليات التنظيف التي تُجرى عند جمع البيانات المهملة للكائنات المستهدفة؛ وفواصل للقيم العددية الحرفية ( )؛ وقد تم تحسين دقة &&=هذه الدالة، مما يقلل من عدد الحالات التي ينتج عنها ترتيب فرز محدد من قِبل التنفيذ.||=WeakRefFinalizationRegistry1_000Array.prototype.sort
الطبعة الثالثة عشرة - ECMAScript 2022
صدرت الطبعة الثالثة عشرة، ECMAScript 2022، في يونيو 2022. [ 11 ] يقدم هذا الإصدار ميزات جديدة await، منها: استخدام الكلمة المفتاحية `<input type="static">` على مستوى أعلى من الوحدات النمطية؛ وعناصر جديدة للفئات: حقول مثيل عامة وخاصة، وحقول ثابتة عامة وخاصة، وطرق ووصول خاصة بالمثيلات، وطرق ووصول ثابتة خاصة؛ وكتل ثابتة داخل الفئات، لإجراء تهيئة تقييم لكل فئة؛ #x in objوبنية لاختبار وجود حقول خاصة في الكائنات؛ ومؤشرات مطابقة التعبيرات النمطية عبر /dالعلامة `<input type="static">`، التي توفر مؤشرات بداية ونهاية للسلاسل الفرعية المطابقة؛ والخاصية `<input type="static">` causeفي Errorالكائنات، والتي يمكن استخدامها لتسجيل سلسلة السببية في الأخطاء؛ والطريقة `<input type="static">` atللسلاسل النصية والمصفوفات والمصفوفات المكتوبة، والتي تسمح بالفهرسة النسبية؛ و`<input type="static">`، وهي Object.hasOwnبديل مناسب لـ `<input type="static">` Object.prototype.hasOwnProperty.
الطبعة الرابعة عشرة - ECMAScript 2023
تم نشر الإصدار الرابع عشر، ECMAScript 2023، في يونيو 2023. [ 40 ] يقدم هذا الإصدار الطرق toSorted، toReversed، ، with، findLastو findLastIndexعلى Array.prototypeو TypedArray.prototype، بالإضافة إلى toSplicedالطريقة على Array.prototype؛ وأضاف دعمًا لتعليقات #!shebang في بداية الملفات لتسهيل ملفات ECMAScript القابلة للتنفيذ بشكل أفضل ؛ وسمح باستخدام معظم الرموز كمفاتيح في المجموعات الضعيفة.
الطبعة الخامسة عشرة - ECMAScript 2024
تم نشر الإصدار الخامس عشر، ECMAScript 2024، في يونيو 2024. [ 41 ] يقدم هذا الإصدار الطرق الثابتة، Object.groupByوعمليات المجموعة المختلفة على ، وعلامة يونيكود للتعبيرات النمطية.Map.groupByPromise.withResolversSet.prototype/v
تقوم طرق Object.groupBy"و" Map.groupByبتجميع مجموعة قابلة للتكرار باستخدام القيمة المرجعة لدالة رد نداء مقدمة.
// بيانات نموذجية const arr = [ { year : "2024" , id : 0 }, { year : "2023" , id : 1 }, { year : "2024" , id : 2 }, ];const obj = Object.groupBy ( arr , ( el ) => el.year ) ; console.log ( obj ) ; // { "2024": [{ year: "2024", id: 0 }, { year : "2024", id: 2 } ], "2023": [{ year: "2023", id: 1 }] }Promise.withResolversيوفر طريقة بسيطة للحصول على وظائف حل الوعد ورفضه مباشرة دون الحاجة إلى تعيينها في المُنشئ. [ 42 ]
// ES 2023 let resolve ; let reject ; let promise = new Promise (( res , rej ) => { resolve = res ; reject = rej ; });// ES 2024 const { resolve , reject , promise } = Promise . withResolvers ();إنّ العلم /vفي التعبيرات النمطية هو ببساطة نسخة محسّنة من /uالعلم، ولكن نظرًا لأنه يُجري تغييرات غير متوافقة مع الإصدارات السابقة، فقد كان لا بد من تقديمه كعلم جديد. [ 43 ]
الطبعة السادسة عشرة - ECMAScript 2025
صدرت النسخة السادسة عشرة من ECMAScript في عام 2025. [ 44 ] وتضيف ما يلي:
- الكائن
Iteratorالذي يمكنه تغليف المكررات مثلArrayويوفر واجهة وظيفية مع التقييم الكسول . Promise.tryاستدعاء دالة قد تكون أو لا تكون وعدًا كوعدSetطرق جديدة :Set.intersection،Set.difference،Set.symmetricDifference،Set.isSubsetOf،Set.isSupersetOf،Set.isDisjointFromRegExp.escapeدالة لتهريب سلسلة نصية بحيث يمكن دمجها مع نمط التعبير النمطي.- استيراد ملفات JSON مباشرة كوحدات نمطية
- Float16Array بالإضافة إلى طرق TypedArray ذات الصلة
ES.Next
ES.Next هو اسم ديناميكي يشير إلى الإصدار التالي وقت كتابة هذا النص. تتضمن ميزات ES.Next المقترحات النهائية (المعروفة أيضًا باسم "مقترحات المرحلة 4")، وهي مقترحات نهائية غير مدرجة ضمن المواصفات المعتمدة. تتبع لجنة اللغة نموذج "المواصفات الحية"، لذا تُعد هذه التغييرات جزءًا من المعيار، والتصديق إجراء شكلي. [ 45 ]
مراجع
- ↑ "DevEdge Online – دليل مرجعي لجافا سكريبت عبر الإنترنت" . مؤرشف من الأصل في 14 يونيو 1997. تم الاطلاع عليه في 13 أكتوبر 2023 .
{{cite web}}: CS1 maint: bot: حالة عنوان URL الأصلي غير معروفة ( رابط ) - ↑ "مرجع جافا سكريبت" . مؤرشف من الأصل في 20 أبريل 1999. تم الاطلاع عليه في 13 أكتوبر 2023 .
{{cite web}}: CS1 maint: bot: حالة عنوان URL الأصلي غير معروفة ( رابط ) - ↑ مؤرشف في Ghostarchiveوآلة Wayback" تغييرات في جافا سكريبت، الجزء الأول: إيكما سكريبت 5" . يوتيوب. 18 مايو 2009. تم الاطلاع عليه بتاريخ 31 أكتوبر 2013 .
- 1 2 "مواصفات لغة ECMAScript 2015" . إيكما الدولية . يونيو 2015. مؤرشف من الأصل في 14 فبراير 2022. تم الاطلاع عليه في 28 يونيو 2021 .
- 1 2 3 "مواصفات لغة ECMAScript 2016" . إيكما الدولية . يونيو 2016. مؤرشف من الأصل في 14 فبراير 2022. تم الاطلاع عليه في 28 يونيو 2021 .
- 1 2 3 "مواصفات لغة ECMAScript 2017" . إيكما الدولية . يونيو 2017. مؤرشف من الأصل في 17 يناير 2021. تم الاطلاع عليه في 28 يونيو 2021 .
- 1 2 3 "مواصفات لغة ECMAScript 2018" . إيكما الدولية . يونيو 2018. مؤرشف من الأصل في 14 فبراير 2022. تم الاطلاع عليه في 28 يونيو 2021 .
- 1 2 3 "مواصفات لغة ECMAScript 2019" . إيكما الدولية . يونيو 2019. مؤرشف من الأصل في 14 فبراير 2022. تم الاطلاع عليه في 28 يونيو 2021 .
- 1 2 3 "مواصفات لغة ECMAScript 2020" . إيكما الدولية . يونيو 2020. مؤرشف من الأصل في 18 يناير 2021. تم الاطلاع عليه في 28 يونيو 2021 .
- 1 2 "مواصفات لغة ECMAScript 2021" . إيكما الدولية . يونيو 2021. مؤرشف من الأصل في 24 يونيو 2021. تم الاطلاع عليه في 26 يونيو 2021 .
- 1 2 "مواصفات لغة ECMAScript 2022" . إيكما الدولية . يونيو 2022. مؤرشف من الأصل في 24 ديسمبر 2023. تم الاطلاع عليه في 22 يوليو 2024 .
- ↑ "مواصفات لغة ECMAScript 2023" . إيكما الدولية . يونيو 2023. مؤرشف من الأصل في 20 ديسمبر 2023. تم الاطلاع عليه في 22 يوليو 2024 .
- ↑ "مواصفات لغة ECMAScript 2024" . إيكما الدولية . يونيو 2024.
- ↑ "مواصفات لغة ECMAScript 2025" . إيكما الدولية . يونيو 2025.
- ↑ محاضر اجتماع 24 مارس 2015، مؤرشفة في 23 يونيو 2017 على موقع Wayback Machine . ESDiscuss. انظر أيضًا معايير ECMA المسحوبة، مؤرشفة في 13 أغسطس 2015 على موقع Wayback Machine . ECMA.
- ↑ هانسن، لارس ت. (22 أكتوبر 2007). "نشر ورقة بحثية حول ES4" . mozilla.org . Mail.mozilla.org. مؤرشف من الأصل في 2 نوفمبر 2013. تم الاطلاع عليه في 31 أكتوبر 2013 .
- ↑ بيروت، سيباستيان (4 مارس 2021). "القصة الحقيقية وراء ECMAScript 4" . auth0.com . مؤرشف من الأصل في 12 مايو 2020. تم الاطلاع عليه في 5 مارس 2020 .
- ↑ "نظرة عامة على لغة ECMAScript، الإصدار الرابع المقترح" (ملف PDF) . ecmascript.org . 23 أكتوبر 2007. مؤرشف من النسخة الأصلية (ملف PDF) في 23 ديسمبر 2010.
- ↑ نتسكيب (30 يونيو 2003). "مقترح نتسكيب لـ ECMAScript4" . www-archive.mozilla.org . نتسكيب.
- ↑ جون ريسيج. "جون ريسيج - إصلاحات الأخطاء في جافا سكريبت 2" . Ejohn.org. مؤرشف من الأصل في 2 نوفمبر 2013. تم الاطلاع عليه في 31 أكتوبر 2013 .
- ↑ "التوافق بين ES3 و ES4 المقترح" (ملف PDF) . Ecmascript.org. مؤرشف من الأصل (ملف PDF) بتاريخ 24 يوليو 2014. تم الاطلاع عليه بتاريخ 31 أكتوبر 2013 .
- ↑ "مواصفات لغة ECMAScript" (ملف PDF) . إيكما الدولية . 19 أبريل 2009. مؤرشف من الأصل (ملف PDF) في 19 أبريل 2009. تم الاطلاع عليه في 19 مارس 2018 .
- ↑ "ECMAScript 3 وما بعده - مدونة IEBlog - الصفحة الرئيسية للموقع - مدونات MSDN" . Blogs.msdn.com. 30 أكتوبر 2007. مؤرشف من الأصل في 11 فبراير 2010. تم الاطلاع عليه في 31 أكتوبر 2013 .
- ↑ "ما رأيي في ES4. – ألباتروس! – الصفحة الرئيسية للموقع – مدونات MSDN" . Blogs.msdn.com. 31 أكتوبر 2007. مؤرشف من الأصل في 27 يناير 2010. تم الاطلاع عليه في 31 أكتوبر 2013 .
- ↑ "رسالة مفتوحة إلى كريس ويلسون" . بريندان إيتش. 31 أكتوبر 2007. مؤرشفة من الأصل في 16 سبتمبر 2011. تم الاطلاع عليها في 31 أكتوبر 2013 .
- ↑ "جافا سكريبت 2 والويب المفتوح" . 20 نوفمبر 2007. مؤرشف من الأصل في 10 فبراير 2014. تم الاطلاع عليه في 20 يناير 2014 .
- 1 2 3 4 5 6 7 إيكما الدولية (12 يناير 2006). "مواصفات لغة إيكما سكريبت 4" (ملف PDF) . archives.ecma-international.org . إيكما الدولية.
- ↑ "ECMAScript Harmony" . Mail.mozilla.org. 13 أغسطس 2008. مؤرشف من الأصل في 26 أغسطس 2013. تم الاطلاع عليه في 31 أكتوبر 2013 .
- ↑ "إنجاز هام في توحيد معايير جافا سكريبت - مدونة جافا سكريبت - الصفحة الرئيسية للموقع - مدونات MSDN" . Blogs.msdn.com. 9 أبريل 2009. مؤرشف من الأصل في 23 مارس 2010. تم الاطلاع عليه في 31 أكتوبر 2013 .
- ↑ «إيكما إنترناشونال تُنهي مراجعةً رئيسيةً لـ ECMAScript» . إيكما إنترناشونال. 9 أبريل 2009. مؤرشف من الأصل في 4 سبتمبر 2011. تم الاطلاع عليه في 22 مايو 2009 .
- ↑ "أخبار إيكما السابقة" . Ecma-international.org. مؤرشف من الأصل بتاريخ 16 أبريل 2020. تم الاطلاع عليه بتاريخ 29 مارس 2020 .
- ↑ إصدارات جافا سكريبت من موقع W3schools
- ↑ كريل، بول. "رسميًا: تمت الموافقة على ECMAScript 6" . إنفوورلد . مؤرشف من الأصل في 23 مارس 2018. تم الاطلاع عليه في 19 مارس 2018 .
- ↑ "5 ميزات رائعة في ECMAScript 6 (ES6 Harmony) - Wintellect" . Wintellect . 24 مارس 2014. مؤرشف من الأصل في 22 يوليو 2017. تم الاطلاع عليه في 19 مارس 2018 .
- ↑ "ECMAScript 6 (ES6): ما الجديد في الإصدار القادم من جافا سكريبت؟" . مجلة سماشينغ . 28 أكتوبر 2015. مؤرشف من الأصل في 24 نوفمبر 2017. تم الاطلاع عليه في 19 مارس 2018 .
- ↑ "ECMAScript 6: الميزات الجديدة: نظرة عامة ومقارنة" . es6-features.org . مؤرشف من الأصل بتاريخ 18 مارس 2018. تم الاطلاع عليه بتاريخ 19 مارس 2018 .
- ↑ "معيار ECMA-262، الإصدار السادس / يونيو 2015، مواصفات لغة ECMAScript 2015، 14.2 تعريفات دوال الأسهم" . www.ecma-international.org . 2015. مؤرشف من الأصل في 14 فبراير 2022. تم الاطلاع عليه في 28 يونيو 2021 .
- ↑ "ECMAScript 2017 (ES8): مجموعة الميزات النهائية" . 2ality . مؤرشف من الأصل في 23 أبريل 2018. تم الاطلاع عليه في 23 أبريل 2018 .
- ↑ "ES2019: ربط اختياري للحالات غير المتوقعة" . 2ality.com . 13 أغسطس 2017. تم الاطلاع عليه بتاريخ 26 أبريل 2022 .
- ↑ "مواصفات لغة ECMAScript 2023" . إيكما الدولية . يونيو 2023. تم الاطلاع عليه بتاريخ 30 يونيو 2023 .
- ↑ "مواصفات لغة ECMAScript 2024" . إيكما الدولية . يونيو 2024.
- ↑ "Promise.withResolvers() - JavaScript | MDN" . developer.mozilla.org . 23 نوفمبر 2023. تم الاطلاع عليه بتاريخ 18 أغسطس 2024 .
- ↑ "RegExp v flag with set notation and properties of strings · V8" . v8.dev . Retrieved 18 August 2024 .
- ↑ "ECMAScript 2025: أفضل الميزات الجديدة في جافا سكريبت" . إنفوورلد . 16 يوليو 2025. تم الاطلاع عليه في 4 سبتمبر 2025 .
- ↑ "ES.Next هو الإصدار التالي من مواصفات لغة ECMAScript — Tuto Javascript" . gdevops.gitlab.io . تم الاطلاع عليه بتاريخ 5 يوليو 2023 .
روابط خارجية
جافا سكريبت 1.0
- كما تم تطبيقه في متصفح نتسكيب نافيغيتور 2.0 قبل تقديم النسخة الأولى للتوحيد القياسي باسم إيكما سكريبت: "دليل كتابة جافا سكريبت" . مؤرشف من الأصل في 13 يونيو 1997. تم الاطلاع عليه في 13 أكتوبر 2023 .
{{cite web}}: CS1 maint: bot: حالة عنوان URL الأصلي غير معروفة ( رابط )
معايير ISO
معايير ECMA
- مواصفات لغة ECMAScript ECMA-262
- الطبعة الأولى، يونيو 1997: ملف PDF
- الطبعة الثانية، أغسطس 1998: ملف PDF
- الطبعة الثالثة، ديسمبر 1999: ملف PDF
- الطبعة الثالثة (النهائية)، مارس 2000: ملف PDF
- الطبعة الرابعة (نظرة عامة): ملف PDF
- الطبعة الرابعة (المسودة النهائية): HTML ، PDF
- الطبعة الخامسة، ديسمبر 2009: ملف PDF
- الإصدار 5.1، يونيو 2011: HTML ، PDF
- الطبعة السادسة، يونيو 2015 (مواصفات لغة ECMAScript 2015): HTML ، PDF
- الطبعة السابعة، يونيو 2016 (مواصفات لغة ECMAScript 2016): HTML ، PDF
- الطبعة الثامنة، يونيو 2017 (مواصفات لغة ECMAScript 2017): HTML ، PDF
- الطبعة التاسعة، يونيو 2018 (مواصفات لغة ECMAScript 2018): HTML ، PDF
- الطبعة العاشرة، يونيو 2019 (مواصفات لغة ECMAScript 2019): HTML ، PDF
- الإصدار الحادي عشر، يونيو 2020 (مواصفات لغة ECMAScript 2020): HTML ، PDF
- الطبعة الثانية عشرة، يونيو 2021 (مواصفات لغة ECMAScript 2021): HTML ، PDF
- الإصدار الثالث عشر، يونيو 2022 (مواصفات لغة ECMAScript 2022): HTML ، PDF
- الإصدار الرابع عشر، يونيو 2023 (مواصفات لغة ECMAScript 2023): HTML ، PDF
- الإصدار الخامس عشر، يونيو 2024 (مواصفات لغة ECMAScript 2024): HTML ، PDF
- مواصفات مكونات ECMAScript ECMA-290 (يونيو 1999)
- ECMA-327 ECMAScript الإصدار الثالث - ملف تعريف مختصر (يونيو 2001)
- ECMA-357 مواصفات ECMAScript لـ XML (E4X) (يونيو 2004)
- معايير إيكما
- جافا سكريبت
