ثابت ها در جاوا اسکریپت

از ویکی کد
پرش به ناوبری پرش به جستجو
Main Page Tutorial
JavaScript-menu.png
موارد آموزشی
فرم‌ها در جاوا اسکریپت
اشیاء در جاوا اسکریپت
تابع در جاوا اسکریپت
HTML DOM در جاوا اسکریپت
Browser BOM در جاوا اسکریپت
AJAX در جاوا اسکریپت
JSON در جاوا اسکریپت
جی‌کوئری در برابر جاوا اسکریپت
مثال‌های جاوا اسکریپت
مرجع جاوا اسکریپت

ورژن 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
شما می‌توانید مطالب بیشتری را در مورد ناحیه کد بلاک یا Block Scope را در فصل قبلی یعنی فصل کلمه کلیدی Let در جاوا اسکریپت بیابید.

مقدار دهی در زمان تعریف

متغیرهایی که با کلمه کلیدی 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.gif Edge.gif Firefox.gif Safari.gif Opera.gif
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";

منابع آموزشی