const let var

const let 以及暂存死区

const在声明时就要赋值,如果是赋值常量那么不可以改变值;如果定义的是数组或者对象,可以改变属性值

letconst可以定义块级作用域中的变量,都存在暂存死区:通过 let 声明的变量直到它们的定义被执行时才初始化。但let命令一旦创建了一个变量a,也就限制了其所在的局部作用域使用的变量a只能是let所定义的a。因为没有let变量提升,所以在变量初始化前访问该变量会导致 ReferenceError。该变量处在一个自块顶部到初始化处理的“暂存死区”中。

注意:如果const在全局和局部都声明了同一个变量s,在局部作用域中出现的s都会被认为是由在局部作用域中声明的那个

const声明的数据始终无法更改吗?
不是的。const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动。对于简单数据类型,值就保存在指向的地址,所以数值不可更改。但是对于引用对象来说,变量指向的地址保存的是指向实际数据的指针。

const a = {name: "iiii", age: "99"}
a.name = "oooo"//可执行
a = ooo//不可执行,报错

顶层对象与全局对象

ES5以及之前,顶层对象window与全局对象时等价的
ES6 为了保持兼容性,var命令和function命令声明的全局变量,依旧是顶层对象的属性;但let命令、const命令、class命令声明的全局变量,不属于顶层对象的属性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值