ثابت‌ها

از موتو کد، دانشنامهٔ برنامه‌نویسی

نسخه ES2015 جاوا اسکریپت، شامل دو کلمهٔ کلیدی جدید بود: let و const. [۱]

متغیرهایی که با کلمه کلیدی const تعریف می‌شوند همانند متغیرهایی که با کلمه کلیدی let تعریف می‌شوند، رفتار می‌کند به جز اینکه آنها را نمی‌توان از نو مقداردهی کرد:

مثال[ویرایش | ویرایش]

const PI = 3.141592653589793;
PI = 3.14;      // This will give an error
PI = PI + 10;   // This will also give an error


مشاهدهٔ نتیجه

ناحیه کد بلاک (Block Scope)[ویرایش | ویرایش]

تعریف یک متغیر با کلمه کلیدی const زمانی که درون ناحیه کد بلاک یا Block Scope قرار می‌گیرد بسیار شبیه به تعریف متغیر با کلمه کلیدی let است.

متغیر x ای که در این مثال، در این بلاک تعریف شده‌است با متغیری که خارج از بلاک تعریف شده‌است، یکی نیست:

مثال[ویرایش | ویرایش]

var x = 10;
// Here x is 10
{
  const x = 2;
  // Here x is 2
}
// Here x is 10


مشاهدهٔ نتیجه


شما می‌توانید مطالب بیشتری را در مورد ناحیه کد بلاک یا Block Scope را در فصل قبلی یعنی فصل کلمه کلیدی Let در جاوا اسکریپت بیابید.

مقدار دهی در زمان تعریف[ویرایش | ویرایش]

متغیرهایی که با کلمه کلیدی let تعریف می‌شوند می‌بایست در همان هنگام تعریفشان مقدار دهی شوند:

روش نادرست[ویرایش | ویرایش]

const PI;
PI = 3.14159265359;

روش صحیح[ویرایش | ویرایش]

const PI = 3.14159265359;

کلمه کلیدی const کمی گمراه‌کننده است.

این کلمه یک مقدار ثابت را تعریف نمی‌کند. این کلمه موجب تعریف یک مرجع ثابت به یک مقدار می‌شود.

به خاطر این امر، ما نمی‌توانیم مقادیر primitive ثابت را تغییر دهیم، اما می‌توانیم ویژگی‌های شی ثابت را تغییر دهیم.

داده ها یا مقادیر اولیه (primitive)[ویرایش | ویرایش]

اگر ما یک ثابت را مقدار دهی اولیه کنیم، ما نمی‌توانیم مقدار آن را تغییر دهیم:

مثال[ویرایش | ویرایش]

const PI = 3.141592653589793;
PI = 3.14;      // This will give an error
PI = PI + 10;   // This will also give an error


مشاهدهٔ نتیجه


اشیاء ثابت می توانند تغییر کنند[ویرایش | ویرایش]

شما می‌توانید ویژگی‌های یک شی ثابت را تغییر دهید:

مثال[ویرایش | ویرایش]

// You can create a const object:
const car = {type:"Fiat", model:"500", color:"white"};

// You can change a property:
car.color = "red";

// You can add a property:
car.owner = "Johnson";


مشاهدهٔ نتیجه


اما شما نمی‌توانید یک شی ثابت را از دوباره مقداردهی کنید:

const car = {type:"Fiat", model:"500", color:"white"};
car = {type:"Volvo", model:"EX60", color:"red"};    // ERROR


مشاهدهٔ نتیجه


ثابت های آرایه ای می توانند تغییر کنند[ویرایش | ویرایش]

شما می‌توانید عناصر یک ثابت آرایه ای را تغییر دهید:

مثال[ویرایش | ویرایش]

// You can create a constant array:
const cars = ["Saab", "Volvo", "BMW"];

// You can change an element:
cars[0] = "Toyota";

// You can add an element:
cars.push("Audi");


مشاهدهٔ نتیجه


اما شما نمی‌توانید یک ثابت آرایه ای را از نو مقدار دهی کنید:

مثال[ویرایش | ویرایش]

const cars = ["Saab", "Volvo", "BMW"];
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 تعریف شده‌است در هر جایی از برنامه مجاز است:

مثال[ویرایش | ویرایش]

var x = 2;    //  Allowed
var x = 3;    //  Allowed
x = 4;        //  Allowed

از دوباره تعریف کردن یا از دوباره مقدار دهی کردن یک متغیر موجود که با کلمه کلیدی var یا let تعریف شده‌است با یک ثابت یا const ، در ناحیه کد یا Scope مشترک یا درون بلاک مشترک، مجازنیست:

مثال[ویرایش | ویرایش]

var x = 2;         // Allowed
const x = 2;       // Not allowed
{
  let x = 2;     // Allowed
  const x = 2;   // Not allowed
}

از دوباره تعریف کردن یا از دوباره مقداردهی کردن یک متغیر ثابت موجود، در ناحیه کد یا const مشترک یا بلاک مشترک نیز مجاز نیست:

مثال[ویرایش | ویرایش]

const x = 2;       // Allowed
const x = 3;       // Not allowed
x = 3;             // Not allowed
var x = 3;         // Not allowed
let x = 3;         // Not allowed

{
  const x = 2;   // Allowed
  const x = 3;   // Not allowed
  x = 3;         // Not allowed
  var x = 3;     // Not allowed
  let x = 3;     // Not allowed
}

از دوباره تعریف کردن یک متغیر با کلمه کلیدی const در یک ناحیه یا Scope دیگر یا درون بلاک دیگر نیز مجاز است:

مثال[ویرایش | ویرایش]

const x = 2;       // Allowed

{
  const x = 3;   // Allowed
}

{
  const x = 4;   // Allowed
}

بالا بردن[ویرایش | ویرایش]

متغیرهایی که با کلمه var تعریف می‌شوند به بالای اسکریپت hoisted (به فارسی: منتقل)می‌شوند. (<translate> نکته</translate> <translate> نکته:</translate> اگر شما نمی‌دانید که Hoisting چیست، فصل Hoisting یا جا به جایی را بخوانید)

شما می‌توانید از یک متغیر قبل از تعریف شدنش، استفاده کنید:

شما می‌توانید از متغیری که با کلمه کلیدی var تعریف شده‌است، قبل از تعریف، استفاده کنید.

مثال[ویرایش | ویرایش]

carName = "Volvo";    // You CAN use carName here
var carName;


مشاهدهٔ نتیجه


متغیرهایی که با کلمه const تعریف می‌شوند، به بالای اسکریپت منتقل نمی‌شوند.

یک const (به فارسی: متغیرثابت) را نمی‌توان قبل از تعریف آن استفاده کرد:

مثال[ویرایش | ویرایش]

carName = "Volvo";    // You can NOT use carName here
const carName = "Volvo";

منابع آموزشی[ویرایش]