一、作用域
let:没有变量提升,且定义的变量只在let命令所在的代码块中生效,在定义之前使用,会报错
const:同let
var:变量会被提升,在全局范围内都有效,且可在变量定义之前使用
二、重复声明
let:在同一作用域内,不允许重复声明同一个变量
const:同let
var:允许重复声明
三、赋值
let:可以只声明,不赋值
const:只能定义一个只读的常量,定义后不能再改变,不允许只声明不赋值。需要注意的是,对于对象、数组等数据类型,const定义保存的只是数据的指针,所以数据结构是可变的。
var:同let
四、适用场景
1、为了安全,大部分情况下var都可以用let替代,尤其是for循环中定义循环变量,使用let可以避免变量污染
2、定义常量用const
3、有些老版本的浏览器还不兼容let和const,只能用var。