var声明的变量,在声明的全局范围内都有效;
let声明的变量,仅在它所在的代码块内有效;
const声明的常量,仅在它所在的代码块内有效;
var存在变量提升,变量在声明之前使用,值为undefined;
let不存在变量提升,变量一定要在声明后使用,否则报错;
let声明变量之前,该变量都是不可用的, 称为“暂时性死区”;
const不存在常量提升,同样存在暂时性死区,只能在声明的位置后面使用;
let不允许在相同作用域内,重复声明同一个变量;
const不允许在相同作用域内重复声明同;
const
(1)声明一个简单数据类型(数值\字符串\布尔值)的只读的常量。一旦声明,必须立即初始化, 常量的值就不能改变;
(2)声明一个复合数据类型(对象\数组)的只读的常量。一旦声明,必须立即初始化, 变量指向的内存地址值不变, 实际保存的数据结构可变;