let和const

let/const是新增的可以用来声明变量

1:const 的值不能改变,但是如果赋值的是引用类型,就可以通过引用找到对应的对象,然后修改对象的内容

1 const mingzi = 'tyy'
2     // mingzi = 'tsf' 这样程序会报错
3 const obj = {
4     foo: 'heihie'
5 }
6 obj.foo = '我被修改啦'
7 console.log(obj.foo); //这样可以修改

 

 

 2: var可以重复声明变量,但是let和const不能重复声明变量

1 var x = 10
2 var x = 5
3 const y = 5
4 const y = 10
5 console.log(x, y);

这样 const会报错

3:作用域提升

var会作用域提升,但是let和const不会

 

 

 但是如果修改一下

 

 

 

 注意:这并没有说明const声明的变量会在执行是才创建,而是这些变量会被创建在包含他们的词法环境被实例化时,但是是不可以访问它们的,直到词法绑定被求值;所以说它没有作用域提升。

4:window 对象添加属性

var 在全局声明变量的时候都会在window上面添加属性,但是let/const不会,那它们的变量保存到那里呢,在最新的标准中,说明了声明的变量和环境记录是被保存在变量环境中的(vm),l例如V8引擎是通过varibleMap里的一个hashmap来存储的,window对象是早期的GO对象,在最新的实现其实浏览器添加的全局对象

 

posted @   沁霓  阅读(36)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示