let与var区别

<!DOCTYPE html>
<html>
<head>
    <title>let与var区别</title>
    <meta charset="UTF-8">
    <script type="text/javascript">
        console.log("var");
        
        var a = [];
        for (var i = 0; i < 10; i++) {
            a[i] = function () {
                console.log(i);
            };
        }
        a[6](); // 输出10,这是因为var是全局的,地址共享,所以a[0]-a[9]均为10

      
        
        console.log("let");
        var a = [];
        for (let i = 0; i < 10; i++) {
            a[i] = function () {
                console.log(i);
            };
        }
        a[6](); // 输出6,这是因为let是块级作用域,这里会创建10个数,且a[0]=0、a[1]=1、a[2]=2.....以此类推
        
    </script>
</head>
<body>

</body>
</html>

1、let不允许在相同作用域内,重复声明同一个变量

2、let声明的变量只在它所在的代码块有效

posted @ 2019-01-14 10:50  legendheng  阅读(222)  评论(0编辑  收藏  举报