var的缺陷,let、const优势总结

1,850 阅读1分钟

var的缺陷

第一、污染全局空间

    //ES5常见作用域 window、function、with等等
    var a = 1;
    console.log(window.a); // 1

第二、变量提升

   console.log(b);       //undefined
   var b = 2;
   console.log(b);       // 2
   
   等价于
   var b;
   console.log(b);       //undefined
   b = 2; 
   console.log(b);       // 2

第三、重复声明

    var a = 1;
    var a = 2;
    var a = 3;
    console.log(a);     //3

第四、无法声明常量

    var a = 2;
    a = 5;
    console.log(a);     // 5 无法定义不可更改的常量

第五、不会产生作用域

    for(var i = 0;i < 9;i++){
        setTimeout(()=>{
            console.log(i);
        },1000)
    }

let 和 const的优势

 //第一 解决了污染全局命名空间的问题
 let a = 1;
 console.log(window.a);   // 获取不到a的值说明let声明的变量没有挂载在window上面,而是挂载在自己的作用域下面
 
 //第二 解决了变量提升的问题
 console.log(a);        //不可以   
 let a = 1;   
 
 //第三 解决了重复声明的问题。这里的无法重复声明是指在同一个作用域下面无法重复声明。
 let a = 1;
 let a = 2;     //不可以重复定义
 
 //第四 解决了无法定义常量的问题
 const a = 1;
 a = 2;   //不可以修改,这里的不可以修改是指不可以修改数据的指针。例如:
 const b = {};
 b.c = 2;
 console.log(b);  // 得到{c : 2}
 
 //第五 let配合{}可以产生独立的作用域
  for(let i = 0;i < 9;i++){
        setTimeout(()=>{
            console.log(i);
        },1000)
    }