مقدمه
ES5 و ES6 به نسخههای مختلف استاندارد ECMAScript اشاره دارند که مشخصات زبان اسکریپتنویسی است و به عنوان پایهای برای چندین زبان از جمله جاوااسکریپت عمل میکند. تحول از ES5 به ES6 (که به نام ECMAScript 2015 نیز شناخته میشود) تغییرات و بهبودهای زیادی را به همراه داشت. در اینجا مقایسهای بین این دو آورده شده است:
let .1 و const (تعریف متغیرها)
ES5: روش اصلی برای تعریف متغیرها استفاده از var
بود.
ES6: معرفی let
برای تعریف متغیرهای بلوکمحور و const
برای تعریف متغیرهای ثابت بلوکمحور.
2. الگوهای رشتهای (Template Literals)
ES5: رشتهها با استفاده از +
به هم متصل میشدند.
var name = "John";
var greeting = "Hello, " + name + "!";
ES6: الگوهای رشتهای معرفی شدند.
let name = "John";
let greeting = `Hello, ${name}!`;
Arrow Functions .3
ES5:
function(x) {
return x * x;
}
ES6: توابع پیکانی معرفی شدند که نگارش کوتاهتری برای نوشتن توابع ارائه میدهند.
x => x * x;
4. کلاسها (Classes)
ES5: از ارثبری پروتوتایپی برای شبیهسازی رفتار کلاسها استفاده میشد.
ES6: کلمه کلیدی class
برای برنامهنویسی شیءگرا معرفی شد.
5. بهبود در نگارش اشیاء (Enhanced Object Literals)
ES5: اشیاء با جفت کلید-مقدار تعریف میشدند.
ES6: نگارش کوتاهتری برای تعریف اشیاء ارائه میدهد.
let name = "John";
let obj = {name}; // Equivalent to {name: name}
6. تجزیهسازی (Destructuring)
ES5: روش مستقیمی وجود نداشت.
ES6: امکان استخراج چندین خاصیت از یک شیء یا آرایه به صورت مختصرتر فراهم شد.
let person = { firstName: "John", lastName: "Doe" };
let { firstName, lastName } = person;
7. مقادیر پیشفرض، Rest و Spread
ES5: مدیریت مقادیر پیشفرض، rest یا spread به صورت دستی انجام میشد.
ES6: مقادیر پیشفرض برای پارامترهای توابع، پارامتر ...rest
برای جمعآوری آرگومانها و اپراتور ...spread
برای گسترش آرایه یا شیء معرفی شد.
8. ماژولها (Modules)
ES5: سیستم ماژول بومی وجود نداشت. توسعهدهندگان از راهحلهای شخص ثالث مانند CommonJS یا AMD استفاده میکردند.
ES6: سیستم ماژول بومی با استفاده از import
و export
معرفی شد.
9. وعدهها (Promises)
ES5: از callbacks برای عملیاتهای غیرهمگام استفاده میشد.
ES6: وعدهها (Promises) برای مدیریت عملیاتهای غیرهمگام به شیوهای ساختارمندتر معرفی شدند.
10. حلقه for-of
ES5: برای تکرار روی آرایهها از حلقههای for
یا forEach
استفاده میشد.
ES6: حلقه for-of
برای تکرار روی اشیاء قابل تکرار معرفی شد.
Set، Map، WeakSet، WeakMap .11
ES5: معادل مستقیمی وجود نداشت.
ES6: این نوع کلکسیونها برای مدیریت دادهها معرفی شدند.
12. نوع Symbol
ES5: چنین نوعی وجود نداشت.
ES6: نوع Symbol
برای ایجاد شناسههای منحصربهفرد معرفی شد.
13. روشهای آرایه و شیء
ES5: مجموعه محدودی از روشها.
ES6: روشهای جدیدی مانند Array.from
، Array.of
، Object.assign
و بسیاری دیگر معرفی شدند.
14. مدیریت پارامترها
ES5: پارامترها با استفاده از شیء arguments
دسترسی داده میشد.
ES6: پشتیبانی مستقیم از مدیریت پارامترها با استفاده از rest
، default
و spread
.
نتیجه
این یک مقایسه در سطح بالا است. انتقال از ES5 به ES6 تغییرات و بهبودهای زیادی را به همراه داشت که زبان جاوااسکریپت را به طور چشمگیری غنیتر کرد. با گذشت زمان، نسخههای بعدی (مانند ES7/ES2016 و نسخههای بعدی) ویژگیهای بیشتری به زبان افزودند.