彻底理解var/let/const三者的区别

创建时的区别
  1. ES3创建变量用的是 var
  2. ES6创建变量用的是 let / const
var/let/const三者指针指向的区别
  1. LET VS CONST =>突出的是指针指向以及等号赋值的底层机制
  2. =等号赋值其实就是指针指向的过程:先创建值,再创建变量(引申:堆栈内存上以及AO/VO上 [点到为止]),最后指针关联;LET创建的是变量,是因为可以修改当前变量的指针指向,而CONST创建的变量,指针指向一但确定,则不能再更改(引申:平时也看一些好的文章,有的文章中介绍CONST创建的是常量,我认为这样说法是不严谨的,因为毕竟它只是指针不能改变,如果指向的是一个对象,在不改变指针的情况下,我们是可以修改对象值的)
  3. 真实项目中,我们对于一些需要宏观管控的标识值,一般都是基于CONST创建(例如:vuex或者redux中需要派发的行为标识),以及一些后续不能再更改指向的变量或者函数,也会基于CONST创建!
VAR 和 LET / CONST的区别
  1. LET不存在变量提升(加一句:所以不能在声明的代码之前使用),我之前在公司写项目,基本上都是基于ES6 LET处理了,这样我会把后续需要用到的变量,在代码起始的位置都先声明定义一下(给的是默认值) “变量声明前置”,而且创建函数也一般都是基于函数表达式的方式创建了,保证只有在创建代码的后面函数才可以有效执行…
  2. LET不允许重复声明 (真实项目中,代码量较多,除了声明前置,可以避免重复声明报错的问题,而且我会尽可能把业务拆分,每一个小模块单独在一个闭包中,降低相同上下文中变量声明的个数,这也是防止重复声明的办法…)
  3. 在全局上下文中,基于LET声明的全局变量和全局对象GO(window)没有任何的关系,VAR声明的变量会和GO有映射机制(把映射机制简单阐述一下…)
  4. 暂时性死区问题,基于typeof检测一个未被声明的变量,不会报错,结果是undefined(引申:我之前看过一些类库的部分源
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值