作用域:
-
var是函数作用域,在函数内声明在整个函数内都有效
-
let和const是块级作用域,只在声明的大括号内有效
变量提升:
-
var会变量提升,可以在声明前使用,但值是undefined
-
let和const也会提升,但在声明前使用会报错,这叫暂时性死区
重复声明:
-
var允许重复声明同一个变量
-
let和const不允许重复声明,会报错
值的修改:
-
var和let声明的变量可以重新赋值
-
const声明的变量不能重新赋值,但如果是对象,可以修改对象内部的属性
初始化:
-
var和let可以不初始化
-
const必须初始化,且不能重新赋值
实际使用:
-
现在推荐使用let和const
-
优先使用const,需要重新赋值时用let
-
避免使用var,因为它容易造成作用域污染
兼容性:
let和const是ES6引入的,需要现代浏览器支持。
使用let和const是现代JavaScript的最佳实践。