Const في JavaScript

التوصية بالدراسة:

ECMAScript 2015let ES2015 أضاف كلمتين مفتاحيتين مهمتين جديدتين في JavaScript: 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 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 年 3 月 2013 年 10 月 2015 年 2 月 2016 年 9 月 2016 年 3 月

重新声明

在程序中的任何位置都允许重新声明 JavaScript var 变量:

مثال

var x = 2;    // 允许
var x = 3;    // 允许
x = 4;        // 允许

在同一作用域或块中,不允许将已有的 varlet 变量重新声明或重新赋值给 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;   // مسموح
}

Hoisting

من خلال var المتغيرات المحددة سيتمHoistingإلى القمة. إذا لم تكن تعرف ما هو Hoisting، فمن الأفضل أن تتعلم هذا الفصل.

يمكنك استخدام المتغير var قبل إعلانه:

مثال

carName = "Volvo";    // يمكنك استخدام carName هنا
var carName;

جرب بنفسك

من خلال const المتغيرات المحددة لن تُرفع إلى القمة.

const لا يمكن استخدام المتغير قبل إعلانه:

مثال

carName = "Volvo";    // لا يمكنك استخدام carName هنا
const carName = "Volvo";