چه چیزی در ES2023 جدید است؟ 👀

سال گذشته مقالهای درباره ویژگیهای جدید ES2022 در سال جاری نوشتم، اجازه دهید ویژگیهای جدیدی را که به عنوان بخشی از ES2023 ارائه میشوند بررسی کنیم.
ویژگی های ES2023
1. آرایه از آخرین را پیدا کنید
این تابع به ما این امکان را می دهد که بر اساس یک شرط، عنصر از آخرین تا اول آرایه را پیدا کنیم.
const array = [{a: 1, b: 1}, {a: 2, b: 2}, {a: 3, b: 3}, {a: 4, b: 4}]
console.log(array.findLast(n => n)); //result -> {a: 4,b: 4 }
console.log(array.findLast(n => n.a * 5 === 20)); // result -> {a:4,b:4} as the condition is true so it returns the last element.
console.log(array.findLast(n => n.a * 5 === 21)); //result -> undefined as the condition is false so return undefined instead of {a:4,b:4}.
console.log(array.findLastIndex(n => n.a * 5 === 21)); // result -> -1 as the condition is not justified for returning the last element.
console.log(array.findLastIndex(n => n.a * 5 === 20)); // result -> 3 which is the index of the last element as the condition is true.
2. Hashbang Grammer
این ویژگی ما را قادر می سازد از Hashbang / Shebang در برخی از CLI استفاده کنیم.
شبانگ توسط #! و یک خط ویژه در ابتدای فیلمنامه است که به سیستم عامل می گوید که از کدام مفسر هنگام اجرای اسکریپت استفاده کند.
#!/usr/bin/env node
// in the Script Goal
'use strict';
console.log(2*3);
#!/usr/bin/env node
// in the Module Goal
export {};
console.log(2*2);
#!/usr/bin/env node
این خط یک فایل منبع Node.js را مستقیماً به عنوان یک فایل اجرایی فراخوانی می کند.
ما به این خط نیاز نداریم (#!/usr/bin/env node)
برای فراخوانی یک فایل به طور صریح از طریق مفسر گره، به عنوان مثال، node ./file
3. نمادها به عنوان کلیدهای WeakMap
این اجازه می دهد تا از نمادهای منحصر به فرد به عنوان کلید استفاده کنید. در حال حاضر WeakMaps محدود به اجازه دادن به اشیا به عنوان کلید است. اشیا به عنوان کلید برای WeakMaps استفاده می شوند زیرا جنبه هویتی یکسانی دارند.
Symbol تنها نوع ابتدایی در ECMAScript است که به جای ایجاد یک شی جدید با WeakMap، مقادیر منحصربهفردی را برای استفاده از Symbol به عنوان کلید میدهد.
const weak = new WeakMap();
const key = Symbol('my ref');
const someObject = { a:1 };
weak.set(key, someObject);
console.log(weak.get(key));
موارد استفاده بیشتر مربوط به ShadowRealms و Record & Tuples با استفاده از نمادها به عنوان WeakMaps
4. تغییر آرایه با کپی
این روش های اضافی را ارائه می دهد Array.prototype
برای ایجاد تغییرات در آرایه با بازگرداندن کپی جدید آن با تغییر به جای به روز رسانی آرایه اصلی.
جدید Array.prototype
توابع معرفی شده عبارتند از:
Array.prototype.toReversed()
Array.prototype.toSorted(compareFn)
Array.prototype.toSpliced(start, deleteCount, ...items)
-
Array.prototype.with(index, value)
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
/* toReversed */
const reversed = numbers.toReversed();
console.log("reversed", reversed); // "reversed", [9, 8, 7, 6, 5, 4, 3, 2, 1]
console.log("original", numbers); // "original", [1, 2, 3, 4, 5, 6, 7, 8, 9]
/* toSorted */
const sortedArr = numbers.toSorted();
console.log("sorted", sortedArr); // "sorted", [1, 2, 3, 4, 5, 6, 7, 8, 9]
console.log("original", numbers); // "original", [1, 2, 3, 4, 5, 6, 7, 8, 9]
/* with */
const replaceWith = numbers.with(1, 100);
console.log("with", replaceWith); // "with", [1, 100, 3, 4, 5, 6, 7, 8, 9]
console.log("original", numbers); // "original", [1, 2, 3, 4, 5, 6, 7, 8, 9]
/* toSpliced */
const splicedArr = numbers.toSpliced(0, 4);
console.log("toSpliced", splicedArr); // "toSpliced", [5, 6, 7, 8, 9]
console.log("original", numbers); // "original", [1, 2, 3, 4, 5, 6, 7, 8, 9]
اینها مجموعهای از ویژگیهای فوقالعاده هستند که با ES2023 ارائه میشوند که من واقعاً مشتاقانه منتظر هستم تا آنها را شخصاً در برنامهنویسی روزانهام امتحان کنم.
کد نویسی مبارک! 👩💻