Const در JavaScript

ECMAScript 2015

ES2015 دو کلیدواژه مهم جدید JavaScript را معرفی کرده است:let و const.

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

مثال

const PI = 3.141592653589793;
PI = 3.14;      // اشتباه خواهد بود
PI = PI + 10;   // نیز اشتباه خواهد بود

با خود امتحان کنید

زون بلوک

درزون بلوکاستفاده می‌شوند const در let متغیرهای تعریف شده با

متغیرها مشابه هستند.

مثال

در این مثال، x در بلوک تعریف شده است، که با x تعریف شده در بیرون از بلوک متفاوت است:
// در اینجا، x برابر با 6 است
{ 
  var x = 10;
  const x = 6;
}
// در اینجا، x برابر با 6 است

با خود امتحان کنید

// در اینجا، x برابر با 10 است Let در JavaScript در این فصل، شما بیشتر درباره حوزه‌های بلوک یاد خواهید گرفت.

در زمان تعریف

JavaScript const متغیر باید در زمان تعریف آن مقدار گیرد:

اشتباه است

const PI;
PI = 3.14159265359;

درست است

const PI = 3.14159265359;

این مقدار ثابت واقعی نیست

کلیدواژه const یک اشتباه قوی است.

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

بنابراین، نمی‌توانیم مقدار اولیه مقدار ثابت را تغییر دهیم، اما می‌توانیم ویژگی‌های شیء مقدار ثابت را تغییر دهیم.

مقدار اولیه

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

مثال

const PI = 3.141592653589793;
PI = 3.14;      // اشتباه خواهد بود
PI = PI + 10;   // نیز اشتباه خواهد بود

با خود امتحان کنید

شیء مقدار ثابت می‌تواند تغییر کند

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

مثال

// شما می‌توانید یک شیء const ایجاد کنید:
const car = {type:"porsche", model:"911", color:"Black"};
// شما می‌توانید ویژگی‌ها را تغییر دهید:
car.color = "White";
// می‌توانید ویژگی‌ها را اضافه کنید:
car.owner = "Bill";

با خود امتحان کنید

اما نمی‌توانید یک شیء متغیر را دوباره تخصیص دهید:

مثال

const car = {type:"porsche", model:"911", color:"Black"};
car = {type:"Volvo", model:"XC60", color:"White"};    // ERROR

با خود امتحان کنید

آرایه‌های متغیر می‌توانند تغییر کنند

می‌توانید عناصر آرایه متغیر را تغییر دهید:

مثال

// می‌توانید یک آرایه متغیر ایجاد کنید:
const cars = ["Audi", "BMW", "porsche"];
// می‌توانید عناصر را تغییر دهید:
cars[0] = "Honda";
// می‌توانید عناصر را اضافه کنید:
cars.push("Volvo");

با خود امتحان کنید

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

مثال

const cars = ["Audi", "BMW", "porsche"];
cars = ["Honda", "Toyota", "Volvo"];    // ERROR

با خود امتحان کنید

پشتیبانی مرورگر

Internet Explorer 10 و نسخه‌های پیشین پشتیبانی نمی‌کنند const واژه‌های کلیدی.

جدول زیر نسخه‌های اولین مرورگرهایی که کلید const را کامل پشتیبانی می‌کنند را تعریف می‌کند:

Chrome 49 IE / Edge 11 Firefox 36 Safari 10 Opera 36
مارس 2016 october 2013 فوریه 2015 سپتامبر 2016 مارس 2016

دوباره تعریف

در هر نقطه از برنامه مجاز است که JavaScript را دوباره تعریف کنید var متغیر:

مثال

var x = 2;    // مجاز است
var x = 3;    // مجاز است
x = 4;        // مجاز است

در یک محدوده یا بلوک خاص، مجاز نیست که یک متغیر موجود را دوباره تعریف کنید: var یا let دوباره تعریف یا تخصیص مجدد به const:

مثال

var x = 2;         // مجاز است
const x = 2;       // نه مجاز است
{
  let x = 2;     // مجاز است
  const x = 2;   // نه مجاز است
}

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

مثال

const x = 2;       // مجاز
const x = 3;       // نه مجاز است
x = 3;             // نه مجاز است
var x = 3;         // نه مجاز است
let x = 3;         // نه مجاز است
{
  const x = 2;   // مجاز
  const x = 3;   // مجاز نیست
  x = 3;         // مجاز نیست
  var x = 3;     // مجاز نیست
  let x = 3;     // مجاز نیست
}

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

مثال

const x = 2;       // مجاز
{
  const x = 3;   // مجاز
}
{
  const x = 4;   // مجاز
}

برداشت

از طریق var متغیرهای تعریف شدهبرداشتبه بالا. اگر با مفهوم برده شدن (Hoisting) آشنا نیستید، این فصل را مطالعه کنید.

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

مثال

carName = "Volvo";    // شما می‌توانید در اینجا از carName استفاده کنید
var carName;

با خود امتحان کنید

از طریق const متغیرهای تعریف شده به بالا برده نمی‌شوند.

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

مثال

carName = "Volvo";    // شما نمی‌توانید در اینجا از carName استفاده کنید
const carName = "Volvo";