es6-1 var、const、let

125 阅读1分钟

es6中新增加的二种声明变量的方式,可以解决以前var的一些问题

var的特点

1.可以重复声明

 var a = 'x';
 var a = 'y';
 console.log(a); // y

2.不可以定义常量

例如圆周率里的PI,这写属于常量不能用var,需要使用const

3.不支持块儿级作用域

if( true ) {
    var a = 10;
}
console.log(a);//10

我们从打括号外面依然可以输出 a 的值。

let 的特点

1.支持块儿级作用域,这里可以对比var来进行理解

 if( true ) {
  let a = 10;
  console.log(a);//10
}
console.log(a); //a is not defined

可以看到在打括号内我们可以拿到let声明的变量 a ,但是在外层就拿不到了。

  1. let 没有预解释

我们知道var是有预解释的,比如

console.log(x); //这里不会报错而是'undefined'
var x  = 12;

然后我们把var改成let试一下

console.log(x); //Identifier 'x' has already been declared
let x  = 12;
let a = 20;
 {   
  console.log(a);//a is not defined
   let a = 10;
 }

const 的特点

用来声明常量

const PI = 3.14;
PI = 3.15;
console.log(PI); // Assignment to constant variable.

💡虽然说常量不能再引用别的对象了,但是它的值如果是一个引用类型的话,引用对象的属性还是可以改的

例如:下面的这种方法是可以更改的

const USER = {name:'lmx'};
USER.name= 'lmx2';