es6 第一章节
theme: fancy
.# let const VS var
1. var 可以重复声明变量,let,const 不行
-
这种语法现象 在众多编程语言中最令人头疼
-
const 执行报错样例如下:
-
-
2. var 在全局声明的变量默认会添加在 window 上,let, const 不会
代码在 v8 存储的示意图:
⚠️:
全局编译 :创建全局执行上下文,有变量环境 跟 词法环境
const声明的是词法环境,const存在于词法环境 (obj 块级作用域) 初始值为undefind
全局执行:
- { } 是一个引用类型,其无穷大 不能存放于栈内,会爆栈
- 开辟一个堆空间: # 001(引用地址)
3. var 存在变量的声明提升, let, const 不存在
在{}语句中,var 可以先访问一个变量 再给它定义, 反之 更好。 let const 只能先给它定义再进行访问 ,反之,则不可。
4. let, const 声明的变量配合 {} 形成块级作用域
总结一下:
let ,const, VS var
- var 可以重复声明变量,let const 不行
- var 在全局声明的变量默认会添加在window 上,let const 不会
- var 声明的变量存在于声明提升,let ,const 不存在
- let ,const 声明的变量配和{} 形成块级作用域
作用域规则: 外面不能访问里面,里面能访问外面。
- 浏览器里面顶层对象是 window,但 Node 和 Web Woreker 没有 window 。
- 对应的 node 里面顶层对象是 global,但其他环境都不支持。
- 补充:
第二节 解构赋值
案例:
- 数组上
- 对象上
3. 函数的参数