var的作用就不多说了,下面说说var的缺点:
1.var可以重复声明
var a = 1; var a = 5; console.log(a); //5 不会报错
在像这些这些严谨的语言来说,一般是不允许重复声明的。
2.无法限制修改
var a = 5; a = 6; console.log(a); //6 不会报错
3.没有块级作用域
if(true){
   var a = 5;  
}
console.log(a)   // 5  
以上几个就是我个人对var的看法
ES6中,多了两个声明let 和 const
let和const的共同点 : 不能重复声明,都是块级作用域
//let和const重复声明
//let
let  a=  1;
let  a = 2;
console.log(a);  //报错
//const 
const  b = 2;
cosnt  b = 3;
console.log(b);    //报错
//let和const的块级作用域
//let
if(true){
  let a = 8l  
}
console.log(a);  // 报错
//const
if(true){
  const b  = 8;      
}
console.log(b)  //报错
相对于var
if(true){
  var c = 10;  
}
console.log(c);  //10
let和const的不用点:let声明的是变量,可以改变; const 声明的是常量,不能改变。
//let和const的不同点
//let声明的是变量,可以改变
let  a  = 8;
      a  =  88;
console.log(a);   //88 
//cosnt声明的是常量,不可以改变
const  b= 8;
         b = 88;
console.log(b);  //报错
以上是我个人对var,let和const的理解
原文:https://www.cnblogs.com/qiujun0324/p/9637651.html