hi,我又回来了,今天学习一下
const
命令。
声明一个常量
const
声明一个只读常量,一旦声明,常量的值便不可改变。
例子如下:
const food = 12;
food = 23; // Uncaught TypeError: Assignment to constant variable.
还可以声明一个变量
const
可以声明一个变量,声明以后,必须初始化,否则变错。
例子如下:
const food; // Uncaught SyntaxError: Missing initializer in const declaration
其他特性
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
}
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.
补充:声明变量的方法
- ES5的
var
和function
命令。 - ES6的
let
和const
命令。
最后总结
其实,const也不是很难,只要你细心,就会发现非常的简单。