阅读es6后对let,var和const区别小结

    首先,以大分类来看,let,const区别于var,前者不存在变量声明提前,原因是暂时性死区。然而,暂时性死区是如何形成的,或者说为什么会形成暂时性死区?参考了一篇变量声明过程的文章,let,const在声明变量时,将声明和初始化值两个阶段结合在了一起,var则是分开的。

    而另一方面,let只能生效于所在代码块内。值得注意的是,如:if(true){let a=1}这种语句,如果去掉大括号,就会报错
    
   值得一提的是,在这一部分内容中,有提到一个点,需要注意最好不要在一个方法内用声明式的方式来定义一个子方法,即function a(){}。因为对于es6和es5浏览器来说,它们对于这种形式的写法,会有不同的解释方式,所以最好使用表达式的形式来写。
   
   最后,关于const定义的数据,const对于简单的数据结构(诸如:字符串,布尔值,数值),可以保证值是常量。而其原因则是变量保存的是数据的地址,而地址里住的是数据本身,即简单数据结构。然而,对于复杂数据结构(对象,数组等),地址里住的是指向复杂数据结构(对象数组等)内部数据的指针,const虽然保证了指针不变,但是指针所指向的地址,它们的数据可不一定被“const”了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值