let、const与var的区别

因为ES6之前是没有块级作用域的,只有全局作用域函数作用域,所以ES6新增了let和const两个关键字来实现块级作用域

(let、const)与var的区别

使用var声明变量的时候,大括号{}外面能访问到括号里面使用的var,因为此时内外都处在全局作用域中

但是使用let和const声明变量可以实现块级作用域,所以括号内外不再同一作用域中,因此括号外面不能访问里面

例1:
{   var x = 2; }
//此处可以访问到x
//但是如果使用let或const声明变量
{
let y = 1;
}
//此处不可以访问y
{
  const z = 1;
}
//此处不可以访问z
例2:
var x = 1; //x为1
{   let x = 2; //x为2 }
//x为1,块中声明的变量不会影响块外

在同一作用域中,var、let、const三者之间不能声明同一变量,

且let和const也不能重复声明相同变量

例3:
var x = 1;
let x = 2;  //不允许
const y = 3; //不允许
例4:
let x = 1; let x =2;  //不允许 const y = 1; const y = 2; //不允许

let与const的区别

let与const的区别在于const必须在声明时赋值,且之后不能改变

{
  let x = 1;
  x = 2;
  // x=2
}

{
  const y = 1;
  // y=1
}
{
  const y = 1;//此处必须初始化
  y = 2; //出错,不能更改
}

ps:通过var声明的变量会提升到顶端,let和const则不会

 

posted @ 2019-08-02 20:57  kusaki  阅读(325)  评论(0)    收藏  举报