在ES6以前的版本中,是通过var来声明变量的,存在以下缺点:

    1. 可以重复声明
    2. 不能限制修改(没有常量的概念)
    3. 没有块级作用域
    1. //如果是var,是可以重复声明变量的
    2. var a = 1
    3. var a = 4
    4. //这个没有问题
    5. //使用let const 是不可以的
    6. let a = 1
    7. let a = 2
    8. // 报错 Identifier 'a' has already been declared
    9. //const 同上,不能重复声明
    10. //const声明的常量不能修改
    11. const PI = 3.14
    12. PI = 2 //报错 Assignment to constant variable.
    13. //块级作用域
    14. if(true){
    15. var a = 1
    16. }
    17. console.log(a) // 1
    18. //var 没有块级的作用域,上面的语句可以执行
    19. if(true){
    20. let a = 1
    21. }
    22. console.log(a) // a is not defined a在这里是不能访问的