ES6:var,let,const
let,const和var的区别
- 不存在变量提升
- 同一作用域不能重复定义
- 有严格的作用域
以下详细解释:
- 不存在变量提升
js解析器在执行js代码的时候会进行预解析,对var声明的变量进行变量提升(只是声明提升,提升后相当于没有赋值),如下:
console.log(a)//undefinde var a = 1 console.log(b)//报错:变量未定义 let b = 0;
- 同一作用域不能重复定义
{let a = 0;
let a = 8;}//报错:Identifier ‘a’ has already been declared
//但是可重复赋值
let b = 9;
b = 10
console.log(b)//10
//const:声明一个只读的常量,一旦声明常量不可修改
const c = 10
c = 9//报错
但是如果给const赋值对象,则可修改对象的内容,因为对象属于引用类型,赋值时是将对象的内存地址服给变量,修改对象的内容时,修改的是地址里的数据,地址是不变的
const obj = {name:‘小二’}
obj.name = '小明‘
console.log(obj)//{name:‘小明’}
const d //不赋值,报错
- 有严格的作用域
let,const属于块级作用域,ES6新特性
以上为个人理解,如有错误,请批评指正^v^