在ES6以前的版本中,是通过var来声明变量的,存在以下缺点:
- 可以重复声明
- 不能限制修改(没有常量的概念)
- 没有块级作用域
//如果是var,是可以重复声明变量的var a = 1var a = 4//这个没有问题//使用let const 是不可以的let a = 1let a = 2// 报错 Identifier 'a' has already been declared//const 同上,不能重复声明//const声明的常量不能修改const PI = 3.14PI = 2 //报错 Assignment to constant variable.//块级作用域if(true){var a = 1}console.log(a) // 1//var 没有块级的作用域,上面的语句可以执行if(true){let a = 1}console.log(a) // a is not defined a在这里是不能访问的
