目录

JavaScript Const

这个const关键字被引入ES6(2015)

变量定义为const不可能是重新申报

变量定义为const不可能是重新分配

变量定义为const块作用域

无法重新分配

const变量不能重新赋值:

示例

const PI = 3.141592653589793;
PI = 3.14;      // This will give an error
PI = PI + 10;   // This will also give an error
亲自试一试 »

必须分配

JavaScriptconst变量在声明时必须被赋值:

正确的

const PI = 3.14159265359;

不正确

const PI;
PI = 3.14159265359;

什么时候使用 JavaScript const?

始终使用以下方式声明变量const当您知道不应更改该值时。

使用const当您声明:

  • 一个新的数组
  • 一个新对象
  • 一个新功能
  • 一个新的正则表达式

常量对象和数组

关键字const有点误导。

它没有定义常量值。它定义了对值的常量引用。

因此,您不能:

  • 重新分配一个常量值
  • 重新分配常量数组
  • 重新分配常量对象

    但是你可以:

  • 更改常量数组的元素
  • 改变常量对象的属性

常量数组

您可以更改常量数组的元素:

示例

// 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
亲自试一试 »

常量对象

您可以更改常量对象的属性:

示例

// 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
亲自试一试 »

var、let 和 const 之间的区别

作用域 重新声明 重新分配 吊装 绑定这个
变量 是的 是的 是的 是的
是的 是的
常量 是的

什么是好的?

letconst块作用域

letconst不可能是重新声明

letconst必须是宣布使用前。

letconst不绑定this

letconst未吊装

什么是不好?

var不必声明。

var被吊起。

var与此相关。


浏览器支持

这个letconstInternet Explorer 11 或更早版本不支持关键字。

下表定义了完全支持的第一个浏览器版本:

Chrome 49 Edge 12 Firefox 36 Safari 11 Opera 36
Mar, 2016 Jul, 2015 Jan, 2015 Sep, 2017 Mar, 2016


块作用域

声明一个变量const类似于let到那个时刻块作用域

在本例中,块中声明的 x 与块外声明的 x 不同:

示例

const x = 10;
// Here x is 10

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

// Here x is 10
亲自试一试 »

您可以在本章中了解有关块作用域的更多信息JavaScript 作用域


重新申报

重新声明 JavaScriptvar程序中的任何位置都允许使用变量:

示例

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

重新声明现有的var或者let变量为const,在同一作用域内,不允许:

示例

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

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

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

重新分配现有的const同一作用域内的变量是不允许的:

示例

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

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

重新声明变量const,在另一个作用域或另一个块中,是允许的:

示例

const x = 2;       // Allowed

{
  const x = 3;   // Allowed
}

{
  const x = 4;   // Allowed
}

吊装

变量定义为var吊起的到顶部并可以随时初始化。

含义:您可以在声明变量之前使用该变量:

示例

还行吧:

carName = "Volvo";
var carName;
亲自试一试 »

如果您想了解有关起重的更多信息,请学习本章JavaScript 提升

变量定义为const也被提升到顶部,但没有初始化。

含义:使用const声明之前的变量将导致ReferenceError

示例

alert (carName);
const carName = "Volvo";
亲自试一试 »