let、var 和 const 是JavaScript 中用于声明变量的关键字,它们在定义方式、作用域、重复声明、赋值方面存在区别。
- 定义
let和const是ES6中新增的声明变量的关键字,而var是较老的关键字,用于声明变量;let和const提供了块级作用域(block scope),而var提供的函数作用域或全局作用域。 - 作用域
let和const声明的变量具有块级作用域,它们只在声明它们的代码块内有效,而var声明的变量可以在整个函数内部或全局作用域内访问;这意味着let和const有助于避免变量污染全局作用域,而var可能导致变量提升。 - 重复声明
let和const不允许在同一作用域内重复声明同一个变量,而var允许在同一作用域内重复声明同一个变量,但后面的声明会覆盖前面的声明。12 - 赋值与常量
let声明的变量可以重新赋值,而const声明的变量必须初始化并且不能重新赋值(尽管const引用的对象内容可以修改,但对象的引用地址不能变)。12 - 变量提升
var声明的变量存在变量提升(hoisting)现象,即变量的声明会被提升到作用域的顶部,而let和const不存在变量提升,这意味着在使用let或const声明的变量之前引用它们会导致错误。