let, const, var 的区别 , const一个对象后,还能改变吗?

let 和 const 时ES6中新增声明变量的方式。let、const与var的区别如下:

作用域的不同

var 声明的变量只有两种作用域:全局作用域与函数(局部)作用域,没有块级作用域。在ES6前需要用闭包进行块级作用域的模拟。

let与const声明的变量具备了块级作用域。

重复声明变量的不同

可以使用var重复声明同名变量(严格模式不允许)

不允许在相同作用域内,使用let和const重复声明同一个变量。

变量提升

var命令会发生“变量提升现象”,无论声明在何处,变量声明会被提至其所在作用域的顶部,于是变量可以在声明之前使用,值为undefined,

let与const则没有变量提升,在声明变量之前就访问变量的话,会直提示ReferenceError(引用错误)。如果代码中存在let命令,这个代码块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。所以在代码块内,使用let命令声明变量之前,该变量是不可用的。在这语法上,称为“暂时性死区”(temporal dead zone,简称TDZ)

全局变量与全局对象的属性

var声明的全局变量可以作为全局对象(window/global)的属性存在。

let和const声明的全局变量则不属于全局对象的属性

const声明的常量的改变

const用于声明一个基本类型的时候为常量,其值是不可修改的(不能对常量重新赋值);

声明对象时,对象内部的属性是可以修改的,因为对象是引用数据类型,是把一个内存地址存放到const声明的常量中。修改对象内部的属性不涉及到引用地址的变化,是可以修改的。但是要对常量进行重新赋值则不被允许。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值