JS Const 关键词

创建于 2024-12-03 / 23
字体: [默认] [大] [更大]

ECMAScript 2015

ES2015 引入了两个重要的 JavaScript 新关键词:letconst

通过 const 定义的变量与 let 变量类似,但不能重新赋值:

实例

const PI = 3.141592653589793;
PI = 3.14;      // 这将给出一个错误
PI = PI + 10;   // 这也会报错 亲自试一试 »

块作用域

块作用域内使用 const 声明的变量与 let 变量相似。

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

实例

var x = 10;
// 这里 x 是 10
{
  const x = 2;
  // 这里 x 是 2
}
// 这里 x 是 10 亲自试一试 »

您可以在上一章 JavaScript Let 中学到更多有关块作用域的知识。


在声明时赋值

JavaScript const 变量必须在声明时赋值:

Incorrect

const PI;
PI = 3.14159265359;

Correct

const PI = 3.14159265359;

不是真正的常数

关键字 const 有一定的误导性。

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

因此,我们不能更改常量原始值,但我们可以更改常量对象的属性。


原始值

如果我们将一个原始值赋给常量,我们就不能改变原始值:

实例

const PI = 3.141592653589793;
PI = 3.14;      // 这会报错
PI = PI + 10;   // 这也会报错 亲自试一试 »

常量对象可以更改

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

实例

// 你可以创建一个 const 对象:
const car = {type:"Fiat", model:"500", color:"white"};

// 你可以改变一个属性:
car.color = "red";

// 你可以添加一个属性:
car.owner = "Johnson"; 亲自试一试 »

但是您无法重新为常量对象赋值:

实例

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

常量数组可以更改

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

实例

// 您可以创建一个常量数组:
const cars = ["Saab", "Volvo", "BMW"];

// 你可以改变一个元素:
cars[0] = "Toyota";

// 您可以添加一个元素:
cars.push("Audi");
亲自试一试 »

但是您无法重新为常量数组赋值:

实例

const cars = ["Saab", "Volvo", "BMW"];
cars = ["Toyota", "Volvo", "Audi"];    // ERROR 亲自试一试 »

浏览器支持

Internet Explorer 10 或更早版本不支持 const 关键词。

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

Chrome 49 IE / Edge 11 Firefox 36 Safari 10 Opera 36
Mar, 2016 Oct, 2013 Feb, 2015 Sep, 2016 Mar, 2016

Advertisement

-->

重新声明

在程序中的任何位置都允许重新声明 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 变量之前就使用它:

实例

This is OK:

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

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

意思:代码块知道变量,但在声明之前不能使用它。

在声明 const 变量之前就使用它会导致 ReferenceError.

变量从块的开头一直处于"暂时死区",直到声明为止:

实例

这将导致语法错误(SyntaxError):

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

0 人点赞过