JavaScript Const

es2015 引入了两个重要的 javascript 新关键词:let 和 const。

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

范例

const pi = 3.141592653589793;
pi = 3.14;      // 会出错 pi = pi + 10;   // 也会出错

 

1. 块作用域

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

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

范例

var x = 10;// 此处,x 为 10 { 
  const x = 6;
  // 此处,x 为 6 }// 此处,x 为 10

 

2. 在声明时赋值

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

不正确

const pi;
pi = 3.14159265359;

正确

const pi = 3.14159265359;

 

3. 不是真正的常数

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

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

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

 

4. 原始值

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

范例

const pi = 3.141592653589793;
pi = 3.14;      // 会出错 pi = pi + 10;   // 也会出错

 

5. 常量对象可以更改

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

范例

// 您可以创建 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

 

6. 常量数组可以更改

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

范例

// 您可以创建常量数组: const cars = ["audi", "bmw", "porsche"];// 您可以更改元素: cars[0] = "honda";// 您可以添加元素: cars.push("volvo");

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

范例

const cars = ["audi", "bmw", "porsche"];
cars = ["honda", "toyota", "volvo"];    // error

 

7. 浏览器支持

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 月

 

8. 重新声明

在程序中的任何位置都允许重新声明 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;   // 允许 }

 

9. 提升

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

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

范例

carname = "volvo";    // 您可以在此处使用 carname var carname;

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

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

范例

carname = "volvo";    // 您不可以在此处使用 carname const carname = "volvo";

下一节:js 调试

js 教程

相关文章