es6

74 阅读1分钟

es6 第一章节


theme: fancy


.# let const VS var

1. var 可以重复声明变量,let,const 不行

image.png

  • 这种语法现象 在众多编程语言中最令人头疼

  • const 执行报错样例如下:

  • image.png

  • image.png

2. var 在全局声明的变量默认会添加在 window 上,let, const 不会

image.png

代码在 v8 存储的示意图:

2f5a6bd73877caab6236a5c76d7b5d05.png ⚠️: 全局编译 :创建全局执行上下文,有变量环境 跟 词法环境 const声明的是词法环境,const存在于词法环境 (obj 块级作用域) 初始值为undefind 全局执行:

  1. { } 是一个引用类型,其无穷大 不能存放于栈内,会爆栈
  2. 开辟一个堆空间: # 001(引用地址)

3. var 存在变量的声明提升, let, const 不存在

 在{}语句中,var 可以先访问一个变量 再给它定义, 反之 更好。 let const 只能先给它定义再进行访问 ,反之,则不可。

4. let, const 声明的变量配合 {} 形成块级作用域

总结一下:

let ,const, VS var

  1. var 可以重复声明变量,let const 不行
  2. var 在全局声明的变量默认会添加在window 上,let const 不会
  3. var 声明的变量存在于声明提升,let ,const 不存在
  4. let ,const 声明的变量配和{} 形成块级作用域

作用域规则: 外面不能访问里面,里面能访问外面。

  • 浏览器里面顶层对象是 window,但 Node 和 Web Woreker 没有 window 。
  • 对应的 node 里面顶层对象是 global,但其他环境都不支持。
  • 补充:

image.png

第二节 解构赋值

案例:

  1. 数组上

image.png

  1. 对象上

image.png 3. 函数的参数