let与var关键字在ES6中有什么区别

今天就跟大家聊聊有关let与var关键字在ES6中有什么区别,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

成都创新互联公司专业为企业提供鹤岗网站建设、鹤岗做网站、鹤岗网站设计、鹤岗网站制作等企业网站建设、网页设计与制作、鹤岗企业网站模板建站服务,十载鹤岗做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

 {
   var a = 10;
   let b = 8;
 }
  a //10 
  b // Referenceerror :b is not defined

上面在代码块中声明了两个变量并分别赋值输出到控制台,结果a的变量成功输出,b的输出结果产生了报错。可见,let声明的变量只在它所在的代码块中产生作用。同时,我们也能想到它最好的使用方法就是在for循环中使用。

下面我们再举个例子来观察它与 var 之间的区别:

 var a = [ ]
  for(var i = 0;i<6; i++){
    a[i] = function(){
      console.log(i);
    }
  }
  console.log("i的值:",i);
  a[ 4 ]( );

它的输出结果为:

i 的值:6

6

为什么是 6 呢?一开始我也被吓懵逼了,这有悖于我的常识,以往没注意到的地方,居然这么的low。在我的意识里结果应该 4,而不是 6 。我想了很久也想不明白,以我这种小白的技术,自然是很难搞懂这种资深技术宅的问题。所以,我查了很多资料来解决这个问题,才搞明白。

在for里用 var 声明的 i 是全局变量,在循环外部也可以访问到,在循环体内每次循环都给 i 重新赋一次值,而 i 却是属于全局的,外部的 i 值最终是 6 ,数组 a[ ]指向的 i 始终都是同一个 i,当循环结束时 a [ ] 函数内部的 i 就是最终 i 的结果  6。

如果使用let,声明的变量只在当前代码块中起作用

  var a = [ ]
  for(let i = 0;i<6; i++){
    a[i] = function(){
      console.log(i);
    }
  }
  console.log("i的值:",i);
  a[ 4 ]( );

它的输出结果为:

     i 的值:6
  5

上面代码中,变量i是let声明的,当前的i只在本轮循环有效,所以每一次循环的i其实都是一个新的变量,所以最后输出的是5。你可能会问,如果每一轮循环的变量i都是重新声明的,那它怎么知道上一轮循环的值,从而计算出本轮循环的值?这是因为 JavaScript 引擎内部会记住上一轮循环的值,初始化本轮的变量i时,就在上一轮循环的基础上进行计算。

看完上述内容,你们对let与var关键字在ES6中有什么区别有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。


本文题目:let与var关键字在ES6中有什么区别
网站URL:http://myzitong.com/article/jsesoi.html