首先var let const 都是在js中声明变量的关键字
在es6之前,我们只用var来进行变量声明,了解es6之后,涉及到了块级作用域,let和const
let是代替var来声明变量
const是声明常量的
var、let声明变量时,变量一旦初始化,还可以重新赋值
const声明常量,一旦初始化,就不能重新赋值
区别:
var | let | const | |
---|---|---|---|
重复声明 | 可以 | 不可以 | 不可以 |
变量提升 | 可以 | 不可以 | 不可以 |
暂时性死区 | 不可以 | 可以 | 可以 |
块级作用域 | 不可以 | 可以 | 可以 |
注:在函数作用域内部声明的变量将会与对应的函数作用域进行绑定
当函数内部存在重复声明或者变量提升时,就算外面的作用域已经声明了这个变量,运行还是认准该函数作用域的声明情况。