ES6 var、let、const三者的区别

ES6,声明的方式有 var 、 let 、 const 、 function 、 class ,本文主要讨论 var 、let 、const。

1.var是函数作用域,let、const是块状作用域

2.用var声明的变量会被提升,而用let、const声明的变量不会被提升 

变量提升:也就是将变量声明提升到它所在作用域的最开始的部分。

比如:

console.log(a); //undefined
var a = 10;

如果在声明这个变量之前去引用这个变量,这个变量是用var进行声明的,那么得到的结果其实是undefined,也就是未定义,但是这个变量是存在的。

js在运行之前有一个解析的过程,所以上面代码在js去进行解析的时候,变成了这样:

var a;
console.log(a);//undefined
a = 10;

可以看到变量a的声明在console.log的前面,赋值还是在console.log之后进行赋值的,console.log得到的结果就是undefined.

在声明之前去引用let声明的变量会直接报错,会直接阻断程序的运行。

3.用var可以重复声明同一个变量,而let不可以重复声明,const 变量不能修改。

4.var声明的变量会挂载在window上,而let、const声明的变量不会

       let声明的变量的特点

  • let 声明的变量具有块作用域的特征。
  • 在同一个块级作用域,不能重复声明变量。
  • let 声明的变量不存在变量提升,换一种说法,就是 let 声明存在暂时性死区(TDZ)

    如下:

let a = 1;
console.log(a);  //1
console.log(b);  // b is not defined
let b = 2;

 const 声明方式,除了具有 let 的上述特点外,其还具备一个特点。

 const 定义的变量,一旦定义后,就不能修改,即 const 声明的为常量。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值