var、let、const 之间的区别
1、作用域:
● let 和 const 具有块级作用域
● var 不存在块级作用域,可以跨块访问,不能跨函数访问
2、变量提升:变量能在声明之前使用,就是变量提升
● var 存在变量提升,变量可以在声明之前调用,值为undefined
● let 和 const 不存在变量提升
3、全局属性:浏览器的全局对象是window
● var 声明的变量为全局变量,并且会将该变量添加为全局对象的属性
● 但是 let 和 const 不会
4、重复声明:
● var 可以重复声明变量,后声明的同名变量会覆盖之前声明的
● let 和 const 同一个作用域下不能重名,不允许重复声明变量
5、暂时性死区:
● 在使用 let、const 命令声明变量之前,该变量都是不可用的。这在语法上,称为 暂时性死区
● 使用 var 声明的变量不存在暂时性死区。
6、初始值设置:
● 在变量声明时,var 和 let 可以不用设置初始值
● const声明变量必须设置初始值。
7、指针指向:
● let 和 const 都是ES6新增的用于创建变量的语法。
● let 创建的变量是可以更改指针指向(可以重新赋值)
● const 声明的变量是不允许改变指针的指向。
使用:
● 在开发当中尽量使用 let 和 const 来声明,避免使用var