Es6中的let ,const 与var 的区别

一 let与var的区别:

1.let 不存在变量的提升(最简单的区别):
 var a = "hello";    //没用
 var b = "hi";      //没用
 console.log(c);
 var c = "nihao"
//这时候打印出来的c是 undefined; 不会报错的原因是js是一种预解析的语言

//改为let
console.log(t);
 let t = 100
// 用let的话就会报错  t is not defined
2.let在同一个作用域下不能定义重复的名字
  var a = 1;
  var a = 100;
  console.log(a);
//这种结果是100,用var的话下面的会覆盖上面的

//使用let的话
let a = 1;
  let a = 100;
  console.log(a);
//用let的话 会报错:Identifier 'a' has already been declared
//但是可以使用另一种方法来改变a的值
let b = 1;
  b = 100;
  console.log(b);
//这种打印出来的结果就是100了
3.let有着严格的作用域
//var:他是属于函数作用域
  function fun() {
    var a = 1;
    if (true) {
      var a = 100
    }
    console.log(a);
  }
  fun()
//结果为100

//let:它是属于块级作用域
 function fun() {
    let a = 1;
    if (true) {
      let a = 100
    }
    console.log(a);
  }
  fun()
//这种结果为1

二. const

const同样具备let的以上3点,不过他声明的是一个只读的常量,一旦声明,这个常量的值就不能发生改变;
const r;//err 因为他不能只声名不赋值
 const w = 100
  w = 200;
  console.log(w);
//这种就会报错了,因为他只能读取,不能改变 

   const obj = {};
  obj.name = "SUN"
//这种是可以的,因为他并不是一个常量,而是一个引用数据类型;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。