var
是ES5版本引入的关键字。var
声明的变量是函数作用域,而不是块级作用域。这意味着,var
声明的变量可以在函数内部的任何地方进行访问,而不仅仅是在声明它的块中。此外,var
声明的变量可以被重新赋值和重复声明。
let
和const
。它们都是块级作用域的。与var
不同,let
和const
声明的变量不能被重复声明。
let
声明的变量是可变的(mutable),也就是说,它们的值可以被重新赋值。与var
相比,let
的作用范围更小,并且不能在声明之前使用变量。
const
声明的变量是不可变的(immutable),也就是说,它们一旦赋值,就不能再被重新赋值。与let
和var
不同,const
声明的变量必须在声明时就被初始化(即赋值),否则会产生语法错误。如果const
声明的是一个对象或者数组,虽然无法重新赋值,但是可以修改该对象或数组的属性或元素。