1、const关键字
- 在很多语言中已经存在,比如C/C++中,主要作用是将某个变量修饰为常量。
- 在JavaScript中也是如此,使用consty修饰的标识符为常量,不可以再次赋值。
2、什么时候使用const呢?
- 当我们修饰的标识符不会被再次赋值时,就可以使用const来保证数据的安全性。
建议:在ES6开发中,优先使用const,只有需要改变某一个标识符的时候才使用let。
3、const的注意
(1) 一旦给const修饰的标识符被赋值之后,不能修改
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
// 1.注意一: 一旦给const修饰的标识符被赋值之后,不能修改
// const name = 'tian';
// 会报错: Uncaught TypeError: Assignment to constant variable.
// name = 'kim';
</script>
</body>
</html>
执行可以在浏览器中看到报错:Uncaught TypeError: Assignment to constant variable.
报错原因是赋值给常量变量。
(2)在使用const定义标识符,必须进行赋值
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
// 2.注意二: 在使用const定义标识符,必须进行赋值
// var是可以这么写的
// var name;
// name = 'abc'
// 会报错:Uncaught SyntaxError: Missing initializer in const declaration
// const age;
// age = 18;
</script>
</body>
</html>
执行可以在浏览器中看到报错:Uncaught SyntaxError: Missing initializer in const declaration
报错原因是 const 声明中缺少初始值设定项。
(3)常量的含义是指向的对象不能修改,但是可以改变对象内部的属性
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
// 3.注意三:常量的含义是指向的对象不能修改,但是可以改变对象内部的属性
const obj = {
name: 'kim tian',
age: 18,
weight: '45kg'
}
console.log(obj)
// 改变的是内部属性,没有改内存地址
obj.name = 'gay yang';
obj.age = '30';
obj.weight = '68kg'
console.log(obj)
// 这样就不可以了,因为改变的是内存地址
// obj = {}
</script>
</body>
</html>
从打印结果可以看到,obj里面的属性信息已经成功被改变了,因为内存里面保存的是一个内存地址,而不是一个变量。
但是当改变的是obj,而不是obj里面的属性时会报错。