es6之const命令

导语:今天学习一下const命令。

# 声明一个常量

const声明一个只读常量,一旦声明,常量的值便不可改变。

例子如下:

const food = 12;
food = 23; // Uncaught TypeError: Assignment to constant variable.
1
2

# 声明一个变量

const可以声明一个变量,声明以后,必须初始化,否则变错。

例子如下:

const food; // Uncaught SyntaxError: Missing initializer in const declaration
1

# 其他特性

const和let有许多相似点:

  • 只在其声明的块级作用域中有效;
  • 不存在作用域提升,是暂时性死区,必须先声明,后使用;
  • 不能重复声明,否则会报错

例子如下:

//1.只在其声明的块级作用域中有效
{
    const food = 'apple';
}
console.log(food); // Uncaught ReferenceError: food is not defined

//2.暂时性死区
{
    console.log(HI); // Uncaught ReferenceError: HI is not defined
    const HI = 'hello';
}

//3.不能重复声明
{
    const food = 'apple';
    const food = 'orange'; // Uncaught SyntaxError: Identifier 'food' has already been declared
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# const的声明变量的本质

const声明的变量,并不是说变量的值不能改变,而是对于变量指向那个的内存地址所保存的数据不得改动。

如果声明的变量是基本数据,那值就保存在变量指向的那个内存地址,可以理解为对于常量。

但是如果声明的变量是一个引用数据类型,那只能保证变量保存的指针地址不变,至于变量里面的属性和值,就不能保证了。

注意:如果把这个声明的引用数据类型变量指向另一个对象,就会报错。

例如:

// 常量是一个对象
const About = {};
About.us = 'usb';
About.ua = 'usc';
console.log(About); // {us: "usb", ua: "usc"}
About = {}; // Uncaught TypeError: Assignment to constant variable.

//常量是一个数组
const BALL = [];
BALL.length = 2;
BALL[0] = 'haha';
BALL = []; // Uncaught TypeError: Assignment to constant variable.
1
2
3
4
5
6
7
8
9
10
11
12

# 补充

声明变量的方法

  • ES5的var和function命令。
  • ES6的let和const命令。

# 最后总结

其实,const也不是很难,只要你细心,就会发现非常的简单。

分享至:

  • qq
  • qq空间
  • 微博
  • 豆瓣
  • 贴吧