这篇文章的目的是:
举例说明const为什么不能修改对象绑定,并和let进行比较
- (1)使用
let
来创建一个person对象,并之后再修改person内容
<script type="text/javascript">
let person = {
name: "aaa",
age: "0000"
}
console.log(person.name + " | " + person.age);
person = {
name:"bbb",
age: "1111"
}
console.log(person.name + " | " + person.age);
</script>
输出结果为:
- (2)同样再次使用
const
来创建一个person对象,并修改其内容
<script type="text/javascript">
const person = { // 使用const来定义
name: "aaa",
age: "0000"
}
console.log(person.name + " | " + person.age);
person = {
name:"bbb",
age: "1111"
}
console.log(person.name + " | " + person.age);
</script>
输出结果为:
Uncaught TypeError:Assignment to constant variable,未捕获类型错误:分配给常量变量
转为可以理解的话来说:就是你用const来定义一个person常量,之后又给这个person常量进行重新定义,这种不被允许,是一种错误。
如果真的需要修改person属性的话,应该是使用" 对象名.属性名 = 新的值 "这样的形式才被允许。
那么,来试试这样的形式看可以不。
<script type="text/javascript">
const person = {
name: "aaa",
age: "0000"
}
console.log(person.name + " | " + person.age);
// 使用“对象名.属性名”方式来修改
person.name = "好好先生";
person.age = "666";
console.log(person.name + " | " + person.age);
</script>
输出结果为:
从上图中得知person的属性值被更新过来
得出的结论
所以呢,const不可以修改绑定(即对象的名称),但是可以修改对象的属性值