Const ng JavaScript

ECMAScript 2015

ES2015 ay nagdala ng dalawang mahalagang bagong keyword ng JavaScript:let at const.

通过 const Ang variable na tinukoy let Ang variable na tinukoy ay katulad ng variable, ngunit hindi maaaring muling i-assign:

实例

const PI = 3.141592653589793;
PI = 3.14;      // Ay magiging mali din
PI = PI + 10;   // Ay magiging mali din

亲自试一试

block scope

sablock scopesa loob const Ang variable na idineklara let Ang variable ay katulad.

Sa kasong ito, ang x ay idineklara sa loob ng block, iba sa x na idineklara sa labas ng block:

实例

var x = 10;
// Dito, ang x ay 10
{ 
  const x = 6;
  // Dito, ang x ay 6
}
// Dito, ang x ay 10

亲自试一试

Sa nakaraang kabanata Let ng JavaScript Natutunan ko ang higit pang kaalaman tungkol sa block scope sa sekondarya.

sa panahon ng pagdeklara

JavaScript const Ang variable ay dapat magkaroon ng halaga sa panahon ng pagdeklara:

Hindi tama

const PI;
PI = 3.14159265359;

Tama

const PI = 3.14159265359;

Hindi tunay na constant

Katawan const Mayroong maliwanag na pagiging mali.

Wala siyang tinukoy ang halaga ng constant. Tinukoy niya ang isang constant na pagkilala sa halaga.

Kaya hindi kami maaaring baguhin ang orihinal na halaga ng constant, ngunit maaari naming baguhin ang mga katangian ng object na constant.

Orihinal na halaga

Kung nagbibigay kami ng isang orihinal na halaga sa constant, hindi na kami maaaring baguhin ang orihinal na halaga:

实例

const PI = 3.141592653589793;
PI = 3.14;      // Ay magiging mali din
PI = PI + 10;   // Ay magiging mali din

亲自试一试

Maaari baguhin ang object na constant:

Maaari mong baguhin ang mga katangian ng object na constant:

实例

// Maaari mong lumikha ng object na const:
const car = {type:"porsche", model:"911", color:"Black"};
// Maaari mong baguhin ang mga katangian:
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;   // 允许
}

提升

通过 var 定义的变量会被提升到顶端。如果您不了解什么是提升(Hoisting),请学习提升这一章。

您可以在声明 var 变量之前就使用它:

实例

carName = "Volvo";    // 您可以在此处使用 carName
var carName;

亲自试一试

通过 const 定义的变量不会被提升到顶端。

const 变量不能在声明之前使用:

实例

carName = "Volvo";    // 您不可以在此处使用 carName
const carName = "Volvo";