let,var,const比较

let,var,const比较
类型是否变量提升是否挂在window上作用域是否可以重复定义是否可以多次赋值
var只有函数作用域可以可以
let所有块级作用域同一作用域内不可以定义同名变量,不同作用域内可以可以
const所有块级作用域同上不可以,定义变量之后就不可再赋值

总结:

  • var只有函数作用域,可以重复定义,赋值
  • let和const是块级作用域,所有{}都是作用域,在{}内部定义的变量,外面访问不到,并且不同作用域之间可以定义同名变量
  • 因为let,const不会变量提升,所以在调用他们之前必须先定义。eg:
a = 1; // 错误,因为没有变量提升,所以在调用它之前必须先定义
let a;
复制代码
  • let,const他们是脱离window的,eg:
let a = '123';
window.a // undefined
复制代码
  • const定义的变量一旦定义了就没办法改变其值,但是对于对象和数组这类引用变量,不可以改变指引的对象,但是其值可以改变。 eg:
const a = {};
a.name = 'BaoMax'; // 正确
a = { name: 'BaoMax' }; // 错误
const arr = [];
arr.push(1); // 正确
arr = [1]; // 错误
复制代码

如果想要引用对象的值可以使用:Object.freeze(obj)

Object.freeze(obj): MDN

入参:需要被冻结的对象 出参:被冻结的对象

方法可以冻结一个对象,冻结指的是不能向这个对象添加新的属性,不能修改其已有属性的值,不能删除已有属性,以及不能修改该对象已有属性的可枚举性、可配置性、可写性。也就是说,这个对象永远是不可变的。该方法返回被冻结的对象

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值