关于let和const

1

使用var关键字声明的全局作用域变量属于window对象。

使用let关键字声明的全局作用域变量不属于window对象。

使用var关键字声明的变量在任何地方都可以修改。

在相同的作用域或块级作用域中,不能使用let关键字来重置var关键字声明的变量。

在相同的作用域或块级作用域中,不能使用let关键字来重置let关键字声明的变量。

let关键字在不同作用域,或不用块级作用域中是可以重新声明赋值的。

在相同的作用域或块级作用域中,不能使用const关键字来重置var和let关键字声明的变量。

在相同的作用域或块级作用域中,不能使用const关键字来重置const关键字声明的变量

const 关键字在不同作用域,或不同块级作用域中是可以重新声明赋值的:

var关键字定义的变量可以先使用后声明。

let关键字定义的变量需要先声明再使用。

const关键字定义的常量,声明时必须进行初始化,且初始化后不可再修改。

2

文中说到 const 定义的变量并非不可改变,比如使用const声明对象,可以改变对象值。

那么什么情况能彻底“锁死”变量呢?

可以使用Object.freeze()方法来 冻结变量 ,如:

const obj = {
  name:"1024kb"
}
Object.freeze(obj)
// 此时对象obj被冻结,返回被冻结的对象

需要注意的是,被冻结后的对象不仅仅是不能修改值,同时也

  1. 不能向这个对象添加新的属性
  2. 不能修改其已有属性的值
  3. 不能删除已有属性
  4. 不能修改该对象已有属性的可枚举性、可配置性、可写性

建议判断清楚情况再进行使用

关于let和const

上一篇:分布式锁之Zookeeper


下一篇:同余最短路