let 和 const 是 ECMAScript 2015(ECMAScript 6) 新增加的两个重要JavaScript关键字。
let声明的变量只在let命令所在的代码块 (即JavaScript块级作用域(Block Scope)) 内有效
const用于声明一个或多个常量,声明同时须进行初始化,一旦声明,常量值则不能再修改。但是使用const定义的常量对象或者常量数组是可变的,可对其对象或属性进行添加和修改等操作,但不能对其进行重新赋值。
在ES6之前,JavaScript只有两种作用域:全局变量和局部变量。
全局变量: 在函数外声明的变量
局部变量:在函数内声明的变量
注意这几点:
- 使用var关键字声明的变量在任何地方都可以修改。
- 在相同的作用域或块级作用域中,不能使用let关键字来重置var关键字声明的变量。
- 在相同的作用域或块级作用域中,不能使用let关键字来重置let关键字声明的变量。
- let关键字在不同作用域,或不用块级作用域中是可以重新声明赋值的。
- 在相同的作用域或块级作用域中,不能使用const关键字来重置var和let关键字声明的变量。
- 在相同的作用域或块级作用域中,不能使用const关键字来重置const关键字声明的变量。
- const 关键字在不同作用域,或不同块级作用域中是可以重新声明赋值的。
- 使用var关键字声明的全局作用域变量属于window对象。
- 使用let关键字声明的全局作用域变量不属于window对象。
- var关键字定义的变量可以先使用后声明。(JavaScript变量提升)
- let关键字定义的变量需要先声明再使用。
- const关键字定义的变量需要先声明再使用。