ثابتها
نسخه ES2015 جاوا اسکریپت، شامل دو کلمهٔ کلیدی جدید بود: let
و const
. [۱]
متغیرهایی که با کلمه کلیدی const
تعریف میشوند همانند متغیرهایی که با کلمه کلیدی let
تعریف میشوند، رفتار میکند به جز اینکه آنها را نمیتوان از نو مقداردهی کرد:
مثال
1 const PI = 3.141592653589793;
2 PI = 3.14; // This will give an error
3 PI = PI + 10; // This will also give an error
ناحیه کد بلاک (به انگلیسی: Block Scope)
تعریف یک متغیر با کلمه کلیدی const
زمانی که درون ناحیه کد بلاک یا Block Scope قرار میگیرد بسیار شبیه به تعریف متغیر با کلمه کلیدی let
است.
متغیر x ای که در این مثال، در این بلاک تعریف شدهاست با متغیری که خارج از بلاک تعریف شدهاست، یکی نیست:
مثال
1 var x = 10;
2 // Here x is 10
3 {
4 const x = 2;
5 // Here x is 2
6 }
7 // Here x is 10
مقدار دهی در زمان تعریف
متغیرهایی که با کلمه کلیدی let
تعریف میشوند میبایست در همان هنگام تعریفشان مقدار دهی شوند:
روش نادرست
const PI;
PI = 3.14159265359;
روش صحیح
const PI = 3.14159265359;
کلمه کلیدی const
کمی گمراهکننده است.
این کلمه یک مقدار ثابت را تعریف نمیکند. این کلمه موجب تعریف یک مرجع ثابت به یک مقدار میشود.
به خاطر این امر، ما نمیتوانیم مقادیر primitive ثابت را تغییر دهیم، اما میتوانیم ویژگیهای شی ثابت را تغییر دهیم.
داده ها یا مقادیر اولیه (به انگلیسی: primitive)
اگر ما یک ثابت را مقدار دهی اولیه کنیم، ما نمیتوانیم مقدار آن را تغییر دهیم:
مثال
1 const PI = 3.141592653589793;
2 PI = 3.14; // This will give an error
3 PI = PI + 10; // This will also give an error
اشیاء ثابت می توانند تغییر کنند
شما میتوانید ویژگیهای یک شی ثابت را تغییر دهید:
مثال
1 // You can create a const object:
2 const car = {type:"Fiat", model:"500", color:"white"};
3
4 // You can change a property:
5 car.color = "red";
6
7 // You can add a property:
8 car.owner = "Johnson";
اما شما نمیتوانید یک شی ثابت را از دوباره مقداردهی کنید:
1 const car = {type:"Fiat", model:"500", color:"white"};
2 car = {type:"Volvo", model:"EX60", color:"red"}; // ERROR
ثابت های آرایه ای می توانند تغییر کنند
شما میتوانید عناصر یک ثابت آرایه ای را تغییر دهید:
مثال
1 // You can create a constant array:
2 const cars = ["Saab", "Volvo", "BMW"];
3
4 // You can change an element:
5 cars[0] = "Toyota";
6
7 // You can add an element:
8 cars.push("Audi");
اما شما نمیتوانید یک ثابت آرایه ای را از نو مقدار دهی کنید:
مثال
1 const cars = ["Saab", "Volvo", "BMW"];
2 cars = ["Toyota", "Volvo", "Audi"]; // ERROR
سازگاری با مرورگرها
کلمه کلیدی const
در مرورگر اینترنت اکسپلورر نسخه ۱۰ یا قدیمیتر پشتیبانی نمیشود.
جدول زیر اولین نسخه از مرورگرها را به طور کامل از کلمه کلیدی const
پشتیبانی میکند را نمایش میدهد:
![]() |
![]() |
![]() |
![]() |
![]() |
Chrome 49 | IE / Edge 11 | Firefox 36 | Safari 10 | Opera 36 |
مارس ۲۰۱۶ | اکتبر ۲۰۱۳ | فوریه ۲۰۱۵ | سپتامبر ۲۰۱۶ | مارس ۲۰۱۶ |
از دوباره تعریف کردن
از دوباره تعریف کردن یک متغیر که با کلمه کلیدی var
تعریف شدهاست در هر جایی از برنامه مجاز است:
مثال
1 var x = 2; // Allowed
2 var x = 3; // Allowed
3 x = 4; // Allowed
از دوباره تعریف کردن یا از دوباره مقدار دهی کردن یک متغیر موجود که با کلمه کلیدی var
یا let
تعریف شدهاست با یک ثابت یا const
، در ناحیه کد یا Scope مشترک یا درون بلاک مشترک، مجازنیست:
مثال
1 var x = 2; // Allowed
2 const x = 2; // Not allowed
3 {
4 let x = 2; // Allowed
5 const x = 2; // Not allowed
6 }
از دوباره تعریف کردن یا از دوباره مقداردهی کردن یک متغیر ثابت موجود، در ناحیه کد یا const
مشترک یا بلاک مشترک نیز مجاز نیست:
مثال
1 const x = 2; // Allowed
2 const x = 3; // Not allowed
3 x = 3; // Not allowed
4 var x = 3; // Not allowed
5 let x = 3; // Not allowed
6
7 {
8 const x = 2; // Allowed
9 const x = 3; // Not allowed
10 x = 3; // Not allowed
11 var x = 3; // Not allowed
12 let x = 3; // Not allowed
13 }
از دوباره تعریف کردن یک متغیر با کلمه کلیدی const
در یک ناحیه یا Scope دیگر یا درون بلاک دیگر نیز مجاز است:
مثال
1 const x = 2; // Allowed
2
3 {
4 const x = 3; // Allowed
5 }
6
7 {
8 const x = 4; // Allowed
9 }
بالا بردن
متغیرهایی که با کلمه var
تعریف میشوند به بالای اسکریپت hoisted (به فارسی: منتقل)میشوند. ( نکته: اگر شما نمیدانید که Hoisting چیست، فصل Hoisting یا جا به جایی را بخوانید)
شما میتوانید از یک متغیر قبل از تعریف شدنش، استفاده کنید:
شما میتوانید از متغیری که با کلمه کلیدی var
تعریف شدهاست، قبل از تعریف، استفاده کنید.
مثال
1 carName = "Volvo"; // You CAN use carName here
2 var carName;
متغیرهایی که با کلمه const
تعریف میشوند، به بالای اسکریپت منتقل نمیشوند.
یک const
(به فارسی: متغیرثابت) را نمیتوان قبل از تعریف آن استفاده کرد:
مثال
1 carName = "Volvo"; // You can NOT use carName here
2 const carName = "Volvo";
منابع آموزشی