微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

js 块级作用域 ES6

<!DOCTYPE html>
<html>
<head>
    <Meta charset="utf-8">
    <title>块级作用域</title>
</head>
<body>

<!-- <script type="text/javascript">
    // {}包含的范围 是块级作用域
    // 块级作用域中,使用var声明的变量,依然是全局变量
    {
        var a = 100;
        console.log(a);
    }
    console.log(a);

    // let 声明块级变量 只能在当前的块级作用域使用
    {
        let b = 200;
        console.log(b);
    }
    console.log(b);//报错

</script> -->
<!-- <script type="text/javascript">
    //if 代码块
    if(true){
        let c = 300;
        console.log(c);
    }
    console.log(c); //报错
</script> -->
<!-- <script type="text/javascript">
    //块级作用域  没有变量提升
    {
        // console.log(d);
        // let d = 400;
    }
</script> -->
<!-- <script type="text/javascript">
    //块级作用域  只有块级变量概念,没有块级函数概念
    {
        //function关键字定义的函数,就是全局函数
        fn();
        function fn(){
            console.log(500);
        }

        let f1 = function(){} //属于块级变量,这种函数不会预加载
    }
    fn();
</script> -->
<!-- <script type="text/javascript">
    //let定义块级变量,一般不要在全局直接用
    //全局使用var
    // let num = 100;
    // console.log(100);
    // let num = 200; //会报错
    {
        let a = 100;
        console.log(a);
        //同一个块级作用域中,块级变量可以重新赋值
        a = 200;
        console.log(a);
        a = 400;
        console.log(a);
        //同一个块级作用域中,块级变量不能重复声明
        // let a = 300; //报错
        // console.log(a);
    }
</script> -->
<script type="text/javascript">
    //for循环i丢失的问题
    //循环绑定事件、循环设置定时器(指定的函数,在循环结束后才调用)
    /*for(var i=0; i<5; i++){
        //设置定时器,1秒后,输出循环变量i的值
        (function(m){
            setTimeout(function(){
                console.log(m);
            }, 1000);
        })(i);
    }*/

    for(let i=0; i<5; i++){
        //设置定时器,1秒后,输出循环变量i的值
        //每次循环,都会产生一个块级作用域,其中的块级变量i 互相不影响
        setTimeout(function(){
            console.log(i);
        }, 1000);
    }
</script>
</body>
</html>

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐