(es6学习 )var let const的区别

let 与 var 的区别

var做的声明在全局里都有效 例如:

for(var i=0;i<3;i++){
  var a= 1;
}
console.log(a); //1

在for循环里 变量a泄漏到了全局 但是我们用let 来申声明 

for(var i=0;i<3;i++){
  let  a= 1;
}
console.log(a); //报错  a is not defined

用let声明的变量只在声明的那个函数作用域里有用

let声明之前声明的变量都不可用状态,这个被称为"暂时性死区"

let 与const 不存在变量提升

// console.log(a);   Cannot access 'a' before initialization

let a

let不允许在同一个作用域重复声明

// 报错

function () {

  let a = 10;

  var a = 1;

}

// 报错

function () {

  let a = 10;

  let a = 1;

}

const 是申明一个常量并且被声明的常量不可更改;

例如 : const a = 0;

a = 1 // 报错  Assignment to constant variable.

但是  const a  = {

    x:0

  }

可以操作 a.x = 1;

console.log(a); //{x:1}

但是不可操作

a = {

  x:1

}

//   报错  Assignment to constant variable.

并且const声明必须马上赋值

const的作用域与let相同都只作用于声明的函数内

猜你喜欢

转载自www.cnblogs.com/oneworld/p/10841671.html