Const در جاوا اسکریپت: شناسایی متغیرهای ثابت در ES6

خلاصه آموزش: در این آموزش چگونگی تعریف کردن متغیرهای ثابت با استفاده از کلمه کلیدی const را یاد می گیرید.

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

ES6 روشی جدید برای شناسایی یک   متغیر ثابت (مقدار ثابت) با استفاده از کلمه کلیدی const تعریف کرده است. کلمه کلیدی   const یک مرجع فقط خواندنی برای یک مقدار تعریف می کند.

const VARIABLE_NAME = value;

طبق قرار، مقدار ثابت مشخص شده در جاوا اسکریپت با حروف بزرگ است.

کلمه کلیدی const مانند کلمه کلیدی let کار می کند. اما کلمه کلیدی const متغیرهای . block-scoped ایجاد می کند که مقادیر آن قابل  تعیین مجدد نیست.

متغیرهای شناسایی شده توسط کلمه کلیدی let دوجانبه هستند. به این معنی که می توانید مقدار آنها را هرزمان که بخواهید تغییر دهید، مانند مثال زیر:

let a = 10;
a = 20;
a = a + 5;
console.log(a); // 35

اما، متغیرهایی که توسط کلمه کلیدی const ایجاد شده اند غیر قابل تغییر هستند. به عبارت دیگر، نمی توانید مقدار متفاوتی برای آنها دوباره تعیین کنید. اگر برای تغییر مقدار متغیر ثایت تلاش کنید با TypeError روبرو خواهید شد.

const RATE = 0.1;
RATE = 0.2; // TypeError

به علاوه، متغیری که با استفاده از کلمه کلیدی const ایجاد کرده اید باید فورا به یک مقدار معین ارزش گذاری اولیه شود. مثال زیر یک SyntaxError را نشان می دهد که به خاطر عدم ارزش گذاری اولیه در شناسایی متغیر const  ایجاد شده:

const RED; // SyntaxError

همانطور که گفته شد، متغیرهایی که توسط کلمه کلیدی const هم ایجاد می شوند مثل متغیرهایی که توسط کلمه کلیدی let ایجاد شدند، block-scoped هستند و دارای TDZ هستند.

شی و const جاو‌ا اسکریپت

کلمه کلیدی const شما را متقاعد می کند که متغیری که ایجاد کرده فقط قابل خواندن است. این به این معنی نیست که مقدار واقعی که متغیر const بازمی گرداند تغییرناپذیر باشد. مثال زیر را مشاهده کنید:

const person = { age: 20 };
person.age = 30; // OK
console.log(person.age); // 30

با اینکه متغیر person یک مقدار ثابت است، اما می توانید مقدار ویژگی های آن را تغییر دهید. ولی نمی توانید دوباره یک مقدار متفاوت برای مقدار ثابت person تعیین کنید.

person = {age: 40}; // TypeError

اگر می خواهید مقدار شی person غیرقابل تغییر باشد، باید آن رو بصورت زیر ثابت نگه دارید:

const person = Object.freeze({age: 20});
person.age = 30; // TypeError

نکته قابل توجه اینکه، Object.freeze() سطحی است، به این معنی که فقط ویژگی های شی را ثابت می کند، نه شی های بازگشت داده شده توسط ویژگی های آن را. برای مثال، شی company یک مقدار ثابت و بدون تغییر است:

const company = Object.freeze({
    name: 'ABC corp',
    address: {
        street: 'North 1st street',
        city: 'San Jose',
        state: 'CA',
        zipcode: 95134
    }
});

اما شی company.address تغییر ناپذیر نیست، می توانید به شی ویژگی جدید اضافه کنید، بصورت زیر:

company.address.country = 'USA'; // OK

Const جاوا اسکریپت در یک for loop

ES6 یک طرح جدید به نام for…of ایجاد کرده که اجازه می دهد یک loop تکرار روی اشیا قابل تکرار مثل array ،   Map  یا یک Set و غیره، ایجاد کنید.

var scores = [75, 80, 95];
for (let score of scores) {
    console.log(score);
}

اگر قصد تغییر متغیر score داخل loop را نداشته باشید، در عوض می توانید آن را با استفاده از کلمه کلیدی const مشخص کنید.

var scores = [75, 80, 95];
for (const score of scores) {
    console.log(score);
}

این کار قابل انجام است چون در هر تکرار، for…of یک اتصال جدید با استفاده از کلمه کلیدی const ایجاد می کند. به عبارت دیگر، مقدار ثابت score در هر تکرار ایجاد می شود.

توجه داشته باشید که const در for loop ضروری و دستوری کار نخواهد کرد. تلاش برای استفاده از کلمه کلیدی const برای شناسایی یک متغیر در for loop شما را با خطای TypeError روبرو خواهد کرد، مانند مثال زیر:

for (const i = 0; i < scores.length; i++) { // TypeError
    console.log(scores[i]);
}

دلیل این امر این است که شناسایی فقط یک بار قبل از شروع بدنه loop ارزیابی می شود.

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5٫00 out of 5)
Loading...
counter customizable free hit