giriiş
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 Ve export معرفی شد.
9. وعدهها (Promises)
ES5: از callbacks برای عملیاتهای غیرهمگام استفاده میشد.
ES6: وعدهها (Promises) برای مدیریت عملیاتهای غیرهمگام به شیوهای ساختارمندتر معرفی شدند.
10. حلقه for-of
ES5: برای تکرار روی آرایهها از حلقههای for Veya 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 Ve spread.
Sonuç
این یک مقایسه در سطح بالا است. انتقال از ES5 به ES6 تغییرات و بهبودهای زیادی را به همراه داشت که زبان جاوااسکریپت را به طور چشمگیری غنیتر کرد. با گذشت زمان، نسخههای بعدی (مانند ES7/ES2016 و نسخههای بعدی) ویژگیهای بیشتری به زبان افزودند.









