JavaScript中有三种声明变量的方法,分别是var、let、const。
简单的对三种声明变量的方法做一下区分:
声明方式 | 不初始化变量的值 | 声明后是否可以修改值 | 作用域 | 声明提升 | 是否可以重复声明 | 全局声明中是否会成为window对象属性 | 是否可以条件声明 | 是否可以声明为迭代变量 | 是否会渗透到循环体外 |
---|---|---|---|---|---|---|---|---|---|
var | undefined | 可以 | 函数局部变量 | 会在函数作用域顶部进行变量声明 | 可以 | 会 | 可以 | 不可以(退出循环时,迭代变量保存的是导致循环退出的值) | 是 |
let | undefined | 可以 | 块作用域 | 不会被提升 | 不可以(不同块中可以) | 不会 | 不可以(因为是块作用域) | 可以 | 否 |
const | 必须初始化 | 不可以(对象内部属性除外) | 块作用域 | 不会被提升 | 不可以(不同块中可以) | 不会 | 不可以(因为是块作用域) | 不可以(声明完后不可修改) | 否 |
总结:尽量不使用var来声明变量,优先使用const来声明变量,如果确认声明的变量要修改使用let来声明变量。