基础点
let和const 都是只在声明所在的块级作用域内有效
let声明的变量可以改变,值和类型都可以改变,没有限制
{ let a = 10; var b = 1; } a // 报错,ReferenceError: a is not defined. b // 1
const声明只读的常量并且必须立即初始化
const PI = 3.1415; PI // 3.1415 PI = 3; // 报错,TypeError: "PI" is read-only.
ES5中var只有全局作用域和函数作用域
不存在变量提升
let和const不像var那样会发生“变量提升”现象。所以,变量一定要在声明后使用,否则报错
命令声明变量之前,该变量都是不可用的
console.log(foo); // 输出undefined console.log(bar); // 报错,ReferenceError: bar is not defined. var foo = 2; let bar = 2;
不允许重复声明
let和const不允许在相同作用域内,重复声明同一个变量
定义在不同作用域的同名变量互不干扰
// 报错,TypeError: Duplicate declaration "a". function test() { let a = 10; var a = 1; } // 报错,TypeError: Duplicate declaration "a". function test() { let a = 10; let a = 1; }
前端小学生,仅个人总结,欢迎大佬指点,谢谢!