ECMAScript 2019
شماره نسخه JavaScript
نسخههای قدیمی JS با نام عددی نامگذاری میشوند: ES5 (2009) و ES6 (2015).
از سال 2016، نسخهها با نام سال نامگذاری میشوند: ECMAScript 2016، 2017، 2018، 2019،...
ویژگیهای جدید ES2019:
- String.trimStart()
- String.trimEnd()
- Object.fromEntries
- اتصال انتخابی catch
- Array.flat()
- Array.flatMap()
- Array.Sort() بازنویسی شده
- رابطه مجدد JSON.stringify()
- علامتهای جداکننده مجاز در نوشتارهای رشتهای
- Function.toString() بازنویسی شده
اخطار
این ویژگیها نسبتاً جدید هستند.
مرورگرهای قدیمی ممکن است نیاز به کد جایگزین (Polyfill) داشته باشند
مетод رشته JavaScript trimStart()
ES2019 روشهای رشتهای جدید را به JavaScript اضافه کرده است trimStart()
.
trimStart()
روش کار این روش مشابه trim()
مانند آن، اما فقط فضاهای خالی ابتدایی را حذف میکند.
مثال
let text1 = " Hello World! "; let text2 = text1.trimStart();
از ژانویه 2020، همه مرورگرهای مدرن پشتیبانی از JavaScript String trimStart() را دارند:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 61 | Safari 12 | Opera 50 |
ماه آوریل 2018 | ژانویه 2020 | ماه ژوئن 2018 | سپتامبر 2018 | ماه مه 2018 |
مетод رشته JavaScript trimEnd()
ES2019 به JavaScript امکان میدهد که trimEnd()
روشهای رشتهای.
trimEnd()
روش کار این روش مشابه trim()
مانند آن، اما فقط فضاهای خالی انتهایی را حذف میکند.
مثال
let text1 = " Hello World! "; let text2 = text1.trimEnd();
از ژانویه 2020، همه مرورگرهای مدرن از JavaScript String trimEnd() پشتیبانی میکنند:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 61 | Safari 12 | Opera 50 |
ماه آوریل 2018 | ژانویه 2020 | ماه ژوئن 2018 | سپتامبر 2018 | ماه مه 2018 |
مетод شیء JavaScript fromEntries()
ES2019 به JavaScript امکان میدهد که fromEntries()
روش شیء.
fromEntries()
روش با استفاده از جفتهای کلید/مقدار قابل تکرار یک شیء ایجاد میکند.
مثال
const fruits = [ ["apples", 300], ["pears", 900], ["bananas", 500] ]; const myObj = Object.fromEntries(fruits);
از ژانویه 2020، همه مرورگرهای مدرن از JavaScript Object fromEntries() پشتیبانی میکنند:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 73 | Edge 79 | Firefox 63 | Safari 12.1 | Opera 60 |
ماه مارس 2019 | ژانویه 2020 | ماه اکتبر 2018 | ماه مارس 2019 | ماه آوریل 2019 |
اتصال انتخابی catch
از ES2019 به بعد، اگر لازم نباشد، میتوانید پارامتر catch را حذف کنید:
مثال
قبل از سال 2019:
try { // کد catch (err) { // کد }
بعد از سال 2019:
try { // کد catch { // کد }
از ژانویه 2020، همه مرورگرهای مدرن از بستن انتخابی catch پشتیبانی میکنند:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 58 | Safari 11.1 | Opera 53 |
ماه آوریل 2018 | ژانویه 2020 | ماه ژانویه 2018 | ماه مارس 2018 | ماه مه 2018 |
مетод آرایه JavaScript flat()
ES2019 به JavaScript امکان میدهد که flat()
روش آرایه.
flat()
روش با گسترش آرایههای عمیق یک آرایه جدید ایجاد میکند.
مثال
const myArr = [[1,2],[3,4],[5,6]]; const newArr = myArr.flat();
از ژانویه 2020، همه مرورگرهای مدرن از JavaScript Array flat() پشتیبانی میکنند:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 69 | Edge 79 | Firefox 62 | Safari 12 | Opera 56 |
سپتامبر 2018 | ژانویه 2020 | سپتامبر 2018 | سپتامبر 2018 | سپتامبر 2018 |
مетод آرایه JavaScript flatMap()
ES2019 به JavaScript امکان میدهد که flatMap()
روش آرایه.
flatMap()
روش اولین، همه عناصر آرایه را به تصویر میکشد و سپس با استفاده از گسترش آرایهها یک آرایه جدید ایجاد میکند.
مثال
const myArr = [1, 2, 3, 4, 5, 6]; const newArr = myArr.flatMap((x) => x * 2);
مетод آرایه پایدار sort()
ES2019 تدوین مجددروش sort() آرایه.
قبل از سال 2019، استاندارد اجازه میداد که الگوریتمهای مرتبسازی غیرپایدار مانند QuickSort را استفاده کنند.
بعد از ES2019، مرورگرها باید از الگوریتمهای مرتبسازی پایدار استفاده کنند:
هنگام مرتبسازی بر اساس یک مقدار، این عناصر باید در موقعیتهای رابطهای خود با عناصر دیگری که دارای مقدار مشابه هستند، باقی بمانند.
مثال
const myArr = [ {name:"X00",price:100 }, {name:"X01",price:100 }, {name:"X02",price:100 }, {name:"X03",price:100 }, {name:"X04",price:110 }, {name:"X05",price:110 }, {name:"X06",price:110 }, {name:"X07",price:110 } ];
در مثال بالا، هنگام مرتبسازی بر اساس قیمت، نتایج مجاز نیستند در موقعیتهای دیگر رابطهای مانند زیر ظاهر شوند:
X01 100 X03 100 X00 100 X03 100 X05 110 X04 110 X06 110 X07 110
رابطه مجدد JSON.stringify()
ES2019 تدوین مجددروش stringify() JSON.
قبل از سال 2019، JSON نمیتوانست از کاراکترهای رمزگذاری شده با \ برای تبدیل به زنجیره استفاده کند.
مثال
let text = JSON.stringify("\u26D4");
قبل از ES2019، استفاده از JSON.stringify() روی نقاط کد UTF-8 (U+D800 تا U+DFFF) منجر به بازگشت کاراکترهای Unicode خراب میشود، مانند ���.
با این اصلاح، زنجیرههایی که دارای نقاط کد UTF-8 هستند میتوانند به صورت امن با استفاده از JSON.stringify() تبدیل شوند و با استفاده از JSON.parse() به زنجیرههای اصلی تبدیل شوند.
علامتهای جداکننده
حالا از کاراکترهای جداکننده سطر و جداکننده پاراگراف در نوشتههای زنجیرهای مجاز است (\u2028
و \u2029
)
قبل از سال 2019، اینها به عنوان کاراکترهای پایان سطر در نظر گرفته میشدند و منجر به خطا میشدند:
مثال
// این در ES2019 معتبر است: let text = "\u2028";
توجه کنید
حالا، JavaScript و JSON قوانین مشابهی دارند.
قبل از ES2019:
text = JSON.parse('"\u2028"') به '' تجزیه میشود.
text = '"\u2028"' میدهدخطای گرامری.
رابطه مجدد Function toString()
ES2019 تدوین مجددمетод Function toString() است.
مетод toString() یک رشتهای را بازگرداند که نشاندهنده کد منبع تابع است.
از سال 2019 به بعد، toString() باید کد منبع تابع را بازگرداند، شامل کامنتها، فاصلهها و جزئیات گرامری.
قبل از سال 2019، مرورگرهای مختلف نسخههای مختلفی از تابعها را بازمیگرداند (مثلاً بدون کامنت و فاصله). از سال 2019 به بعد، این تابع باید به طور کامل به همان شکل که نوشته شده است بازگردانده شود.
مثال
function myFunction(p1, p2) { return p1 * p2; }