标签:对象 可重复 无效 tracking article const console 不能 冻结
1、let和const的相同点:
① 只在声明所在的块级作用域内有效。
② 不提升,同时存在暂时性死区,只能在声明的位置后面使用。
③ 不可重复声明。
2、let和const的不同点:
① let声明的变量可以改变,值和类型都可以改变;const声明的常量不可以改变,这意味着,const一旦声明,就必须立即初始化,不能以后再赋值。
const i ; // 报错,一旦声明,就必须立即初始化 const j = 5; j = 10; // 报错,常量不可以改变
② 数组和对象等复合类型的变量,变量名不指向数据,而是指向数据所在的地址。const只保证变量名指向的地址不变,并不保证该地址的数据不变,所以将一个复合类型的变量声明为常量必须非常小心。
const arr = []; // 报错,[1,2,3]与[]不是同一个地址 arr = [1,2,3]; const arr = []; // 不报错,变量名arr指向的地址不变,只是数据改变 arr[0] = 1; arr[1] = 2; arr[2] = 3; console.log(arr.length); // 输出:3
若想让定义的对象或数组的数据也不能改变,可以使用object.freeze(arr)进行冻结。冻结指的是不能向这个对象或数组添加新的属性,不能修改已有属性的值,不能删除已有属性。
const arr = []; Object.freeze(arr); // 不报错,但数据改变无效 arr[0] = 1; arr[1] = 2; arr[2] = 3; console.log(arr.length); // 输出:0
标签:对象 可重复 无效 tracking article const console 不能 冻结
原文地址:https://www.cnblogs.com/vivaxiaonan/p/9378987.html