美文网首页
ES6之var与let

ES6之var与let

作者: 奶酪凌 | 来源:发表于2018-06-08 16:08 被阅读0次

    缘由:

    学习小程序案例,结果案例是用es6写的,只能先去了解下es6(我js也不太好,总之一个字,差!),然后,那个教程中的第一章我就懵了。

    相关资料:

    1. ES6之let(理解闭包)和const命令
    2. ECMAScript 6 入门
    3. 解除 for 循环时 var 和 let 定义变量的困惑

    杂谈

    其实,这个在解除 for 循环时 var 和 let 定义变量的困惑这篇文档中说的很清楚了,我只是记录下我从不理解到有点理解的过程。
    在我刚刚接触的时候,我就只记住了一个词语:块级作用域。let表示块级作用域,var作用的是全局的。

    var.png
    let.png
    我的问题是,为什么for循环里面var i=0的时候,不管里面数值多少(10以内的),都是输出10;但是当let i= 0,的时候,就能输出自己本身的?
    我群友回答: 群友回答.png
    我一直以为a[6] ()进入之后,i=6,a[6]=function(){console.log(i);} 因为var i= 0;所以,开始循环,最后输出i=10;如果是let i= 0;的时候,是块级作用域,只服务于该作用域,a[i]=function(){console.log(i);},直接输出本身值。
    后来,我询问了我师父(我笨的我师父都无奈了......),师父直接写了另一种方法给我:
    闭包.png
    最后:var是作用于全局,只有一个i,等循环之后,一步一步增加,最后i=10;但是let是块级作用域,不增加,只作用于自己,要得到i,只作用在一个for(){}上,输出自己的值。
    对比.png
    最后附上阮一峰老师的说明: image.png

    相关文章

      网友评论

          本文标题:ES6之var与let

          本文链接:https://www.haomeiwen.com/subject/hfhasftx.html