https://es6.ruanyifeng.com/#docs/let
let 不存在变量提升 var有
let 有暂时性死区 必须先声明后使用 var 未声明时可以使用 值为undefined
let 不允许重复声明
let 块级作用域(大括号 {})块级作用域外访问不到
const声明一个只读的常量
const声明的变量不得改变值 声明就初始化 所以不能留到之后赋值 只声明不赋值 会报错
const块级作用域内有效 暂时性死区
const并不是变量的值不能改动 是指向的内存地址所保存的值不允许改变(简单类型的数据(数值、字符串、布尔值) 值就保存在知道的内存地址 故不能改变。复杂类型的数据(对象 数组)变量指向的内存地址保存的是一个指向实际数据的指针,const保证这个指针是固定的)
let const class 声明的全局变量不属于顶级对象的属性
es6声明变量的六种方法
var function let const import class
原始值 存在栈里面
Number String Boolean undefined null
引用值 栈中存的是指向堆的地址指针,值存在堆里
Array Object Function
声明方式 | 变量提升 | 暂时性死区 | 重复声明 | 块作用域有效 | 初始值 | 重新赋值 |
---|---|---|---|---|---|---|
var | 会 | 不存在 | 允许 | 不是 | 非必须 | 允许 |
let | 不会 | 存在 | 不允许 | 是 | 非必须 | 允许 |
const | 不会 | 存在 | 不允许 | 是 | 必须 | 不允许 |