js闭包立即执地函数问题集锦

当内部函数保存到外部时,将会生成闭包。闭包会导致原有作用域链不释放,造成内存泄露

闭包的作用
实现公有变量

 

 

想打印0到9

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>演示代码</title>    
    <script>
        function test() {
            var arr = [];
            for (var i = 0; i < 10; i++) {
                arr[i] = function () {
                    document.write(i+"");
                }
            }
            return arr;
        }
        var myArr = test();
        for (var j = 0; j < 10; j++) {
            myArr[j]();
        }
    </script>
</head>
<body>
</body>
</html>

结果是10101010101010101010

<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>RunJS 演示代码</title>
    <style>
        div {
            width: 30px;
            border: 1px solid #fd3;
            float: left;
        }
    </style>
    <script>
        function test() {
            var arr = [];
            for (var i = 0; i < 10; i++) {               
                (function (j) {
                    arr[j] = function () {
                    document.write(j+""); 
            } }(i)); }
return arr; } var myArr = test(); for (var j = 0; j < 10; j++) { myArr[j](); } </script> </head> <body> </body> </html>

 结果是0123456789

 

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title></title>
    <script>
        function a() {
            function b() {
                var bbb = 234;
                document.write(aaa);
            }
            var aaa = 123;
            return b;
        }
        var glob = 100;
        var demo = a();
        demo();
    </script>
</head>
<body>
</body>
</html>

结果是:123

 1 <script>       
 2         function a() {
 3             var num = 100;
 4             function b() {
 5                 num++;
 6                 console.log(num);
 7             }
 8             return b;
 9         }
10         var demo = a();
11         demo();
12         demo();
13 </script>

结果是:101  102

posted @ 2018-04-09 23:24  stone_ye  阅读(95)  评论(0编辑  收藏  举报