JavaScript中let、const、var 的区别
1、是否存在变量提升?
- var声明的变量存在变量提升(将变量提升到当前作用域的顶部)。即变量可以在声明之前调用,值为undefined。
- let和const不存在变量提升。即它们所声明的变量一定要在声明后使用,否则报ReferenceError错。
console.log(a) //undefined
console.log(b) //报错
var a=100;
console.log(a) //100
let b=
2、是否存在块级作用域?
- var不存在块级作用域。
- let和const存在块级作用域。
什么是块级作用域:
ES5中作用域有:全局作用域、函数作用域。没有块作用域的概念。
ECMAScript 6(简称ES6)中新增了块级作用域。块作用域由{ }包括,if语句和for语句里面的{ }也属于块作用域。
3、是否存在暂时性死区?
- var 不存在暂时性死区。
- let和const存在暂时性死区。即只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。
4、是否能连续声明
- var可以连续声明
- let和const不可以连续声明
5、是否能修改声明的变量
- var和let可以修改变量的值
- const声明的量为常量,不可修改,修改后会报错