Day1-ES6-2-let & const
1. let
let 声明变量,仅在块级作用域内有效,即let所在代码块内有效。
let不存在变量提升,即需先声明,再使用。
暂时性死区,在块级作用域内如存在let声明的变量,即不受外部影响。此变量仅在此封闭作用域内有效。
在for循环中设置循环变量的部分即为一个父作用域。
2.const
- 块级作用域
- 不存在变量提升
- 暂时性死区
const简单来说即声明常量,但是对于数组和对象来说const声明是确定指针指向的地址。指针指向的地址不可变,但是数组和对象本身可变,即可通过prop,push添加属性和元素。
3.顶层对象
var & function 声明的全局变量为顶层对象的属性;let,const,class声明的全局变量不属于顶层对象的属性。
- windows 浏览器中顶层对象
- self 浏览器和Web Worker(运行在后台的js)中的顶层对象
- global node中顶层对象
- this 全局环境中返回顶层对象,nodejs中this返回的是当前模块,es6中this返回undefined
es2020中引入了globalThis作为顶层对象。