JavaScript基础 var let const的区别
var let const的区别
var
- var声明的变量是具有函数作用域
- var声明的变量会提升(提升是指变量的声明会被拿到函数或者全局作用域的顶部)
- 全局作用域中使用var声明变量,该变量会变成window的属性
- 可以多次使用var声明同一变量
- 可以修改变量
let
- let声明的变量具有块级作用域(即花括号{}括住的)
- let声明的变量不会提升
- let在全局作用域声明变量不会变成window的属性
- 在一个作用域里面变量名只能用let声明一次,不能重复声明
- 可以修改变量
const
- const与let的类似,符合前四点
- const 声明的时候就要初始化变量
- const 声明之后就不能修改
使用const let的优点
- 有助于提升代码质量
- 优化性能(块级作用域比函数作用域更早结束,有可能会更早地让垃圾回收程序介入)
注意:不添加什么标识符直接给变量赋值会默认认为只给window属性赋值
为什么会变量提升
在函数执行时会有个函数执行上下文,是在函数创建的时候确定的,函数执行上下文会把函数里面的变量和方法提取出来,var 声明的变量创建并初始化undefined,function声明的方法创建初始化并赋值为可以使用的function,放在函数执行上下文顶端;所以变量会提升
什么是暂存死区
var a=1;
{
console.log(a);//这时候这里会报错,因为块作用域内a还没初始化
let a=1;
}