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被冻结,返回被冻结的对象
需要注意的是,被冻结后的对象不仅仅是不能修改值,同时也
- 不能向这个对象添加新的属性
- 不能修改其已有属性的值
- 不能删除已有属性
- 不能修改该对象已有属性的可枚举性、可配置性、可写性
建议判断清楚情况再进行使用