频道栏目
首页 > 资讯 > JavaScript > 正文

js下ES6的let和var介绍

18-04-11        来源:[db:作者]  
收藏   我要投稿

1.let和var

let:有块级作用域,必须先声明再使用变量(不存在声明提前),不允许重复声明。

        let arr=[];
        for (var a = 0; a < 10; a++) {
            arr[a]=function(){
                console.log(a);
            };
        }

            for (let a = 10; a < 20; a++) {
            arr[a]=function(){
                console.log(a);
            };
        }
        console.log(arr);   //可以看到有20个函数的数组
        //arr[3];  查看控制台可以看出,作用域链上只有两个,一个是script作用域,往下是window(let出现的是arr在script中,window中是a=10)
        //arr[13]; 作用域链上有三个,一个Block里有a=13(证明每次循环的a都被留给函数作为作用域顶端等待函数执行产生),一个script,一个window里有a=10(证明let只在for中起作用,没污染全局)

var arr = [];
        let b = 33;

        function a() {
            if (true) {
                var b = 22;
                let c = 11;

                function d() {
                    console.log(b, c);
                }
                return d;
            }

        }
        console.dir(a());//看作用域链---有四级作用域

Block是由let产生的块级作用域:只有c是11;

Closure是由var产生的,b是22;

Script是由let产生的类似于全局的块级作用域:b是33;

Global作为全局作用域。

证明:但凡有块作用域,let就会被分到自己的块里,而本来应该相同级别处于同一作用域的var声明的变量因为不存在块级作用域,反而到了上一级。

相关TAG标签
上一篇:PCA理论与实践教程
下一篇:企业如何防范钓鱼邮件 选对邮件系统是关键
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站