let
基本用法
- 用于声明变量 声明的变量只在let命令所在的代码块内有效
- for循环的计数器很适合使用let命令
- 每一轮循环的变量都是一个新的变量 之所以会知道上一轮循环的值从而可以计算出本轮的值 是因为js引擎内部会己住上一轮的值
- 不存在变量提升
- 不允许重复声明
- 暂时性死区
- temporal dead zone -> TDZ
- 只要在声明之前使用let/const定义的变量就会报错 是不可使用的
- 在该作用域声明变量之前的部分 成为变量的死区
- 这样做是为了养成良好的编程习惯 变量一定要子声明之后使用
const
基本用法
- 声明一个只读的常量 一旦声明就不可改变 所以必须立即初始化 而不能留到以后赋值
- 暂时性死区
本质
- const本质上保证的并不是变量的值不允许改动,而是变量指向的那个内存地址不可改动。
- 对于原始值而言,值就保存在变量指向的内存地址中。
- 对于引用值而言,变量指向的内存地址保存的只是一个指针,const只能保证这个指针是固定的,而指针指向的数据结构是可变的。
笔记内容整理来自阮一峰老师的《ES6标准入门》