آموزش برنامه نویسی - تاپ دمی

ویژگی های جدید ECMAScript 2021

ﺯﻣﺎﻥ ﻣﻄﺎﻟﻌﻪ: 3 دقیقه
ویژگی های جدید ECMAScript 2021

پس از معرفی es6 جاوا اسکریپت تغییرات زیادی کرد و هر سال ویژگی های جدید به این زبان برنامه نویسی اضافه می شود. در June 22 آخرین نسخه رسمی es12 (ECMAScript 2021) معرفی شد که در این مقاله ویژگی های آن را بررسی می کنیم.

Numeric separators -1

این قابلیت کمک میکند تا اعداد بزرگ خوانایی بالاتری داشته باشند با یک مثال ساده توضیح میدهیم :

const number = 1000000000

در مثال بالا دیدیم که خوانایی عدد کم است حالا با استفاده از (_) می توانیم ارقام عدد را جدا کنیم.

const number = 1_000_000_000 

2- () String replaceAll

با یک مثال این قابلیت را توضیح می دهیم :

میخواهیم کلمه world را در جمله my world is the best world با کلمه friend جا به جا کنیم در حالت کلی می توانیم از متد replace() استفاده کنیم به صورت زیر

let myString = "My world is the best world"

let replace = myString.replace('world', 'friend');

در مثال بالا کلمه friend فقط با کلمه اول جایگزین می شود میتوان با عبارات منظم این کار انجام داد اما امکان ایجاد مشکل در برنامه را افزایش می دهد حال با استفاده از قابلیت جدید میخواهیم این کار را انجام دهیم.

let myString = "My world is the best world"

let replace = myString.replaceAll('world', 'friend');

با استفاده از این متد در همه جای متن به دونباله کلمه مورد نظر میگردد و جا گزینی را انجام می دهد.

weakRef –3

weakRef مخفق Weak references است . جاوا اسکیریپ قابلیت garbage collector را دارد یعنی object های که دارای رفرنس نباشند را حذف می کند. با استفاده از weakRef می توانیم از نگهداری object در حافظ جلوگیری کنیم. برای استفاده از این قابلیت باید از WeakRef یک شی جدید بسازیم و با استفاده از متد deref() به رفرنسمان دسترسی داشته باشیم

const myObject = new weakRef({
    name: "mohammad",
    type: "user"
});

myObject.derref();
myObject.derref().name;
myObject.derref().type;

4- promise.any

یکی دیگر از ویژگی های جدید promise.any می باشد این متد آرایه ای از پرومیس هارا گرفته و به محض این که فقط یکی از آنها resolves شود این متد هم resolves می شود و در صورتی که هیچ دام از پرومیس ها resolves نشود ارور AggregateError نمایش داده می شود.

const A = new Promise((resolve, reject) => {
    setTimeout(() => resolve('A'), 200)
});
const B = new Promise((resolve, reject) => {
    setTimeout(() => resolve('B'), 400)
});
const C = new Promise((resolve, reject) => {
    setTimeout(() => reject('C'), 200)
});
const D = new Promise((resolve, reject) => {
    setTimeout(() => reject('D'), 400)
});

const resolvedPromises = async () => {
    const resolved = await Promise.any([A, B]);
    console.log(resolved);
}

const rejectPromises = async () => {
    const reject = await Promise.any([A, B]);
    console.log(reject);
}

resolvedPromises();
rejectPromises();

5- Private getters and setters

همانند کلاس های خصوصی ،setter و getter خصوصی نیز قابل تعریف است.

class Something {
    get#NAme() {
        console.log('hello mohammad')
    }

    set Name(value) {}

    get showAge() {
        this.#Name  
    }
}

const instance = new Something();
instance.name; // undefined
instance.showAge; // hello mohammad

6-Private class methods

در این ویژگی می توان با قرار دادن # متد یا پروپرتی را به صورت پرایویت تعریف کرد.

class CustomClass {
    #privateMethod() {
        return 'hello world';
    }

    getPrivateMessage() {
        return this.#privateMethod();
    }
}

const instance = new CustomClass ();
console.log(instance.getPrivateMessage())

7- logical assignment operator

(??=) -> (x ??= y) فقط درصورتی که x خالی یا تعریف نشده باشد تخصیص(assignment ) را انجام می دهد در مثال زیر در صورتی که متغییر سمت چپ یکی از undefined or null باشد عملیات انجام می شود.

const a = { time:50 };

a.time ??= 10;
console.log(a.duration)
// 50

a.age ??= 25;
console.log(a.speed)
// 25

(&&=) -> (x &&=y) فقط درصورتی که x مقداری درست باشد تخصیص(assignment ) را انجام می دهد در مثال زیر درصورتی که متغییر سمت چپ مخالف null,undefined, false, 0, or NaN باشد عملیات انجام می شود.

let a = 1;
let b =0;

a &&= 2;
console.log(a);
// 2

b &&= 2;
console.log(b);
// 0

(||?) -> (x ||=y ) فقط درصورتی که x مقداری نادرست باشد تخصیص (assignment ) را انجام می دهد.

در مثال زیر در صورتی که متغییر سمت چپ null, undefined, false, or 0 باشد عملیات انجام می شود.

const a = {time:50, name: ''};

a.time ||= 10;
console.log(a.time);
// 50

a.name ||= 'my title';
console.log(a.name);
// my title

این مقاله برای شما چقدر مفید بود ؟

21 شهریور، 1400

اشتراک گزاری مقاله

مقالات مشابه

بررسی var ، let و const  در جاوا اسکریپت

بررسی var ، let و const در جاوا اسکریپت

پس از معرفی ES6 دو روش جدید برای تعریف متغیر ها در جاوا اسکریپت معرفی شد در این مقاله سعی...

ادامه مطلب
چگونه برنامه نویسی را شروع کنم

چگونه برنامه نویسی را شروع کنم

در این مقاله به بررسی نحوه شروع برنامه نویسی ، چالش ها و سوالاتی که در ذهن هر کاربر برای...

ادامه مطلب
معرفی توابع در جاوا اسکریپت

معرفی توابع در جاوا اسکریپت

در این مقاله با بیان مثال به بررسی مزایا و نحوه تعریف و استفاده از توابع در جاوا اسکریپت...

ادامه مطلب