作用域:

  • 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的最佳实践。