在讲var,let,const几者区别之前,首先需要知道的一点:var是ES55提出的,let和const是ES6提出的。
var变量 | let变量 | cosnt常量 | |||
概念提出 | ES5 | ES6 | ES6 | ||
必须赋值 | 否,声明时可不赋值 | 否,声明时可不赋值 | 是,一旦声明必须赋值 | ||
重复声明 | 是,声明后可改,后一个变量会覆盖前一个变量 | 同一作用域不允许重复声明 | ①同一作用域不允许重复声明 ②声明后不可更改 ③若是声明引用数据类型,可修改其属性 | ||
变量提升 | 存在变量提升 | let不存在变量提升,声明的变量一定要在声明后使用,否则报ReferenceError错 | 否 | ||
块级作用域 | 不存在 | 存在 | 存在 | ||
①ES5中作用域有:全局作用域,函数作用域,无块级作用域 ②ES6新增了块级作用域,块级作用域由{ }包裹,if语句或for语句的{ }也属性块级作用域 ③块级作用域下let和const声明的属于局部变量或者局部常量 |