نسخه های جاوا اسکریپت
در سال ۱۹۹۶ شرکتهای Netscape و Sun Microsystems تصمیم گرفتند تا با همکاری سازمان استانداردسازی Ecma International استانداردی را برای جاوا اسکریپت تهیه کنند. این استاندارد برای جلوگیری از نقض کپی رایت علامت تجاری Java که در مالکیت شرکت Sun بود، ECMAScript نامگذاری شد. این موضوع کمی باعث سردرگمی افرادی میشود که قصد شروع کار با جاوا اسکریپت را دارند و معمولاً تفاوت بین ECMAScript و JavaScript برای افراد مبتدی قابل درک نیست. البته به مرور زمان این سردرگمی رفع خواهد شد. اما به طور خلاصه باید گفت ECMAScript یک استاندارد است که یک زبان برنامهنویسی با ویژگیهایی خاص را توصیف میکند. و JavaScript یک نمونه از ECMAScript یا یک پیادهسازی ECMAScript است. هر شخص یا سازمانی میتواند یک زبان برنامهنویسی مبتنی بر استاندارد ECMAScript ایجاد کند و نام دلخواه خود را برای آن انتخاب کند. مثلاً یکی دیگر از زبانهای برنامهنویسی نسبتاً مشهور و مبتنی بر ECMAScript، زبان ActionScript است که در نرمافزار Flash کاربرد دارد. البته باید توجه کرد که هرچند JavaScript و ActionScript هر دو مبتنی بر استاندارد ECMAScript هستند، اما زبانهای یکسانی نیستند.
در واقع باید گفت که یک زبان برنامهنویسی مبتنی بر ECMAScript، میتواند ویژگیهایی را بنا به نیاز خود به آن اضافه کند. نکته مهم این است که باید تمام ویژگی موجود در استاندارد ECMAScript در زبان مذکور پیادهسازی شود. اما محدودیتی برای اضافه کردن امکانات و ویژگیهای جدید وجود ندارد. و همانطور که در طول این کتاب نیز خواهیم دید. جاوا اسکریپت ویژگیهای زیادی دارد که جزئی از استاندارد ECMAScript نیستند و با توجه به نیاز محیط برنامهنویسی (یعنی محیط وب یا مرورگر)، به آن اضافه شدهاند.
در حالت ایدهآل، انتظار داریم که برنامههای نوشته با جاوا اسکریپت در تمام مرورگرها به یک شکل اجرا شوند. چرا که تمام مرورگرها از ECMAScript پیروی میکنند. اما متاسفانه همیشه اینطور نیست و بعضاً مرورگرها در پیادهسازی برخی از ویژگیهای این زبان موفق عمل نمیکنند. البته میزان این ناسازگاریها بسیار کم بوده و به مرور زمان نیز در حال کمتر شدن است.
اولین نسخه از استاندارد ECMAScript در سال ۱۹۹۷ منتشر شد. یک سال بعد نسخهی دوم با تغییراتی جزئی منتشر شد و در سال ۱۹۹۹ نسخهی سوم این استاندارد با اضافه شدن چند ویژگی جدید منتشر شد. سپس کار بر روی نسخهی چهارم این استاندارد شروع شد. اما اختلافات زیادی برای استانداردسازی این نسخه به وجود آمد. چرا که برخی معتقد به اضافه کردن ویژگیهای قدرتمند و پیچیده به ECMAScript بودند. و برخی برای جلوگیری از پیچیده شدن زبان و همچنین پیچیدگی پیادهسازی مفسر برای این زبان، معتقد به افزودن ویژگیهای کم و ساده بود. در نهایت این اختلافات منجر به کنار گذاشتن نسخهی چهارم شد. یعنی هیچگاه نسخهی چهارم برای ECMAScript منتشر نشد. پس از مدتی کار بر روی نسخهی پنجم آغاز شد و ECMAScript 5 سرانجام در سال ۲۰۰۹ با تغییراتی نه چندان زیاد نسبت به ECMAScript 3 منتشر شد.
بعد از انتشار ECMAScript 5 یا به اختصار ES5، کار بر روی نسخهی بعدی استاندارد با اسم رمز “Harmony” آغاز شد. این نسخه شامل بسیاری از ویژگیهای قدرتمندی میشد که قبلاً برای ES4 در نظر گرفته شده بودند، اما هیچگاه به سرانجام نرسیده بودند. همچنین ویژگیهای جدید دیگری نیز برای این نسخه در نظر گرفته شده بود که همین امر موجب طولانی شدن زمان نهاییسازی این استاندارد، علیرغم تلاشهای بسیار شد. در نهایت پس از ۶ سال در سال ۲۰۱۵ استاندارد نهایی ECMAScript 6 یا ES6 با نام رسمی ECMAScript 2015 منتشر شد.
پس از آن تصمیم گرفته شد که به جای اینکه هر چند سال، یک نسخهی جدید از این استاندارد با تغییرات زیاد نسبت به نسخهی قبل منتشر شود، هر سال در ماه ژوئن یک نسخهی جدید با تغییرات جزئی منتشر شود. و تا امروز به این وعده وفا شده است و در ماه ژوئن سالهای ۲۰۱۶، ۲۰۱۷ و ۲۰۱۸ به ترتیب استانداردهای ES7، ES8 و ES9 منتشر شدهاند. که البته نام رسمی آنها به ترتیب ECMAScript 2016، ECMAScript 2017 و ECMAScript 2018 است. تغییراتی که در این ۳ نسخهی اخیر در ECMAScript ایجاد شده است در مجموع خیلی کمتر از تغییراتی است که در نسخهی سال ۲۰۱۵ یا همان ES6 صورت گرفته است. در واقع ES6 یا ECMAScript 2015 آخرین نسخه از این استاندارد است که تغییرات چشمگیری نسبت به نسخهی قبلی خود داشته است.
در این کتاب سعی بر این است تا آخرین تغییرات این استاندارد و زبان برنامهنویسی جاوا اسکریپت پوشش داده شوند. اما باید توجه داشته باشید که همیشه پس از ارائهی یک نسخهی جدید از ECMAScript، باید مدتی سپری شود تا مرورگرها از ویژگیهای جدید این نسخه پشتیبانی کنند.
در حال حاضر در نسخههای اخیر تمامی مرورگرهای مشهور، از جمله Chrome، Firefox، Edge و Safari، نزدیک به ۱۰۰ درصد ویژگیهای ECMAScript 2016 یا ES7 پشتیبانی میشوند. اما پشتیبانی از ES8 و ES9 کمی با مشکل مواجه است که البته قطعاً در آیندهی نزدیک این مشکلات برطرف خواهند شد. اما باید توجه داشته باشید که ضمن سازگار شدن مرورگرها با استانداردهای فعلی، همیشه استانداردهای جدیدتری نیز در حال تدوین و انتشار هستند. در نتیجه همیشه پشتیبانی مرورگرها از آخرین نسخهی استانداردها ناقص است و معمولاً از زمان انتشار یک نسخهی جدید از استاندارد ECMAScript، حدوداً بین ۱ تا ۲ سال زمان لازم است تا مرورگرهای مختلف پشتیانی خوبی از آن نسخه به عمل آورند.