اکما اسکریپت

تاریخ

مشخصات اکما یک ویژگی استاندارد شده از یک زبان اسکریپتی است که توسط برندان آیک از نت اسکیپ طراحی شده‌است. در ابتدا موچا، بعداً لایو اسکریپت، و در نهایت جاوا اسکریپت نامگذاری شد. در دسامبر ۱۹۹۵ سان مایکروسیستمز و نت اسکیپ جاوا اسکریپت را در مطبوعات اعلام کردند. اولین نسخه اکما-۲۶۲ توسط مجمع عمومی اکما در ژوئن ۱۹۹۷ تصویب شد. چندین نسخه استاندارد زبان از آن زمان منتشر شده‌است. نام «اکما اسکریپت» بین سازمان‌های مربوط به استانداردسازی زبان با سازش انتخاب شد، به خصوص نت اسکیپ و مایکروسافت، که اختلافات آنها در جلسات اولیه استانداردها جلسات را تحت سلطه خود درمی‌آورد. آیک اظهار داشت که «اکما اسکریپت همیشه یک نام تجاری نامناسب است که به نظر می‌رسد مانند یک بیماری پوستی است.»
در حالی که هر دوی جاوا اسکریپت و جی اسکریپت با اکما اسکریپت سازگار هستند، آنها همچنین ویژگی‌های اضافی را که در مشخصات اکما مشخص نشده‌اند، ارائه می‌دهند.

نسخه ۵

یاهو، مایکروسافت، گوگل و دیگر مخالفان نسخه چهارم، کمیته فرعی را برای طراحی یک به روز رسانی کمتر جاه طلبانهٔ اکما اسکریپت ۳ تشکیل دادند که به‌طور آزمایشی ECMAScript 3.1 نامگذاری شد. این نسخه بر روی امنیت و به روز رسانی کتابخانه‌ها تمرکز دارد و تأکید زیادی نیز بر سازگاری دارد.
پس اتفاق ذکر شده و بحث و اختلاف عموم، تیم ECMAScript 3.1 و ECMAScript 4 با سازش موافقت کردند:
"دو نسخه به طور موازی با هماهنگی بین تیم‌ها کار خواهند کرد تا اطمینان حاصل شود که ECMAScript 3.1 همچنان یک زیرمجموعه اصلی از ECMAScript 4 در مفهوم و سینتکس زبان، خواهد ماند. "
با این حال، فلسفه‌های مختلف در هر تیم منجر به شکست‌های مکرر در قانون زیرمجموعه شدن نسخه‌های قدیمی در نسخه‌های جدیدتر شد، و شکی ایجاد کرد که آیا مخالفان اکما اسکریپت ۴ در آینده از این نسخه حمایت خواهند کرد و آن را ارائه خواهند داد یا نه.
پس از گذشت بیش از یک سال از اختلاف نظر در مورد آینده اکما اسکریپت در کمیته ۳۹ فنی اکما، این دو تیم در ماه ژوئیه ۲۰۰۸ به توافق جدید دست یافتند: برندان آیک اعلام کرد که اکما TC39 بر روی پروژه اکما اسکریپت ۳٫۱ (که بعدها به اکما اسکریپت نسخه ۵ تغییر یافت) با همکاری کامل تمام گروه‌ها و فروشندگان که حداقل دو پیاده‌سازی متقابل را تا اوایل سال ۲۰۰۹ هدف قرار می‌دهند با تمرکز کار خواهند کرد.
در آوریل ۲۰۰۹، اکما TC39 طرح «نهایی» نسخه پنجم را منتشر کرد و اعلام کرد که تست‌های پیاده‌سازی‌های متقابل از این خبر می‌دهند که تا اواسط ماه ژوئیه کامل خواهند شد.
در ۳ دسامبر ۲۰۰۹، نسخه پنجم، اکما-۲۶۲ منتشر شد.

نسخه ۶ - اکما اسکریپت ۲۰۱۵

نسخه ششم، که ابتدا اکما اسکریپت ۶ (ES6) شناخته شد و بعداً به اکما اسکریپت ۲۰۱۵ تغییر نام یافت، در ژوئن ۲۰۱۵ نهایی شد. این به روز رسانی دستورالعمل‌های جدیدی را برای نوشتن برنامه‌های پیچیده اضافه می‌کند، از جمله تعریف کلاس‌ها (class Foo { }) و ماژول‌های ES6 مانند import * as moduleName from "..."; export const Foo، اما آنها را به صورت معنایی در شرایطی همانند حالت سختگیر ECMAScript 5 تعریف می‌کند.

دیگر ویژگی‌های جدید شامل تکرارکننده‌ها و حلقه‌های for/of، ایجاد کننده سبک پایتونی، اصطلاح تابع فلش چاق (“fat” arrow functions (=>)) () => {...}، کلمه کلیدیlet برای متغییرهای محلی، کلمه کلیدی const برای متغییرهای ثابت، داده‌های باینری، آرایه‌های تایپ شده، مجموعه‌های جدید (مپ‌ها، مجموعه‌ها و ویک مپ)، پرامیس‌ها (promises) 
var promise1 = new Promise(function(resolve, reject) {
  setTimeout(function() {
    resolve('foo');
  }, 300);});promise1.then(function(value) {
  console.log(value);
  // expected output: "foo"});console.log(promise1);// expected output: [object Promise]// output ://> [object Promise]//> "foo"
 ، تکمیل امکانات اعداد و ریاضیات، انعکاس، پروکسی‌ها و رشته‌های تمپلت 
var bar = 1;var tStr = `foo ${bar}`;// tStr : "foo 1"
 می‌باشد.
به عنوان اولین مشخصه "هارمونی اکما اسکریپت"، آن را به عنوان "هارمونی ES6 " نیز می‌شناسند.

نسخه ۷ - اکما اسکریپت ۲۰۱۶

نسخه هفتم، که به‌طور رسمی اکما اسکریپت ۷ شناخته می‌شود، در ژوئن ۲۰۱۶ نهایی شد.
ویژگی‌های استاندارد اصلی عبارتند از بلوک دامنه برای متغیرها و توابع، الگوهای تخریب (برای متغیرها)، صدا زدن توابع دنباله وار، اپراتور توانی ** برای اعداد، کلمات کلیدیawait وasync برای برنامه‌نویسی به صورت غیر همزمان.

نسخه ۸ - اکما اسکریپت ۲۰۱۷

نسخه هشتم، که به‌طور رسمی اکما اسکریپت ۲۰۱۷ شناخته می‌شود، در ژوئن ۲۰۱۷ نهایی شد. شامل ساختارهای async/await که با استفاده از تولیدکننده‌ها و پرامیس‌ها کار می‌کنند، می‌باشد. اکما اسکریپت ۲۰۱۷ (ES2017)، نسخه هشتم، شامل ویژگی‌هایی برای همزمان سازی و برگردانندگی (صدا زدن توابع (call back))، ادغام سینتکس با پرامیس‌ها (async / waiting) می‌باشد.

نسخه ۹ - اکما اسکرپت ۲۰۱۸

نسخه ۹، که به‌طور رسمی اکما اسکریپت ۲۰۱۸ شناخته می‌شود، در ژوئن ۲۰۱۸ نهایی شد.
ویژگی‌های جدید شامل اپراتور rest/spread برای متغیرها (علامت سه نقطه: foo...)، تکرار غیر همزمان، متد نهایی (finally) برای پرامیس‌ها و اضافه کردن امکانات جدید به RegExp می‌باشد.

ES.Next

ای اس دات نکست نام پویایی است که به هر آنچه که نسخه بعدی در زمان نوشتن است، اشاره دارد. (در واقع امکانات نسخه‌های بعدی اکما اسکریپت)
ویژگی‌های ای اس دات نکست به‌طور صحیح پیشنهاد نامیده می‌شوند، زیرا، با این تعریف، مشخصات و امکانات آن هنوز مشخص و نهایی نشده‌است.

امکانات

زبان اکما اسکریپت شامل ویژگی های ساختاری ، پویا ، برنامه نویسی تابعی و مبتنی بر پیش نمونه است.

سینتکس مختصر

ES6 با خود امکان استفاده از یک حالت جدید از تعریف توابع، به نام "توابع فلش" را آورده است.  در ES5 یک تابع به صورت زیر تعریف می شود: 
var readWikiArticle = function(content) {
  // مقاله را بخوان};
 در حالیکه در ES6، با استفاده از دستور جدید تابع فلش می توان آن را به صورت زیر نوشت: 
var readWikiArticle = (content) => {
  // مقاله را بخوان};
 توابع فلشی همچنین اتصال متغیر بین توابع را بهبود می بخشد.

ترنسپایل کردن

از اکما اسکریپت 2015 تاکنون، ترنسپایل جاوا اسکریپت بسیار رایج شده است. 
ترنسپایل یک تلفیق متن به متن است که در آن نسخه های جدیدتر جاوااسکریپت در کد اصلی کاربر مورد استفاده قرار میگیرند و ترنسپایل کننده آنها را بازنویسی می کند تا با مشخصات فعلی سازگاری داشته باشند.  
معمولاً ترنسپایل کننده ها به نسخه ES3 برای حفظ سازگاری با تمام نسخه های مرورگر ترنسپایل می کنند. 
تنظیمات لازم برای ترنسپایل به یک نسخه خاص می تواند بر اساس نیاز پیکربندی شوند. ترنسپایل کردن یک گام برای فرایند ساخت اضافه می کند و گاهی اوقات برای جلوگیری از استفاده از پولی فیلز (polyfills) نیز می تواند استفاده شود. Polyfills اجازه می دهد به وسیله ی یک فایل جاوا اسکریپتی که ویژگی های خاصی را اضافه می کند ویژگی های اضافی، اضافه شود.