三者之间的区别:
1、变量提升
var 声明变量存在变量提升;
let 和 const 不存在变量提升。
2、预解析
var 会进行预解析,可以在定义之前使用,只不过是undefined;
let 和 const 不会进行预解析,不能在定义之前使用,否则会报错。
3、重复声明一个变量
var 可以重复声明同一个变量,只不过没有意义;
let 和 const 不能重复声明同一个变量,会报错。
4、块级作用域
var 没有块级作用域;
let 和 const 有块级作用域
补充:只有let和const定义的变量会存在的一种作用域,每一个可以书写代码段的 { } 都会限制这个变量的使用范围
let 和 const 的区别:
1、值的修改
let 定义的变量值可以修改
const 定义的常量值不能被修改
2、声明时赋值
let 在声明变量的时候可以不赋值
const 声明常量的时候必须赋值,并且一旦赋值不能修改
3、const 可以改变object类型的值(常用于声明数组和对象)
对象内部的指针不改变就可以
const test = {name:'zlm', age='23'} test.name = 'qxx'
改变前/改变后:
4、不影响作用域链效果
{
let res = '作用域'
function fn(){
console.log(res) //控制台打印 作用域
}
fn()
}