美文网首页
预解析预闭包的例子

预解析预闭包的例子

作者: 番茄向前看 | 来源:发表于2020-03-20 00:19 被阅读0次

    预解析、预闭包、自调函数、多赋值

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    
    <body>
        <ul id="list">
            <li>公司简介</li>
            <li>联系我们</li>
            <li>营销网络</li>
        </ul>
        <script>
            //预加载
            var a = 100; //全局
            (function test() {
                a = 10;
                console.log(a);//10 取得是函数里面的a
                console.log(this.a)//浏览器里面,调用的是window里面的a=100,node里面是//undefind 
                var a//预解析,将代码挪到了第20行 a=undefind
                console.log(a);//100 取得是函数域里面的A
            })();
        </script>
        <script>
    
            var list = document.getElementById("list");
            var li = list.children;
            //let方法 Es6块的作用域
            for (let i = 0; i < li.length; i++) {
                li[i].onclick = function () {
                    alert(i);  // 结果总是3.而不是0,1,2
                }
            }
    
            //闭包方法
            // var list = document.getElementById("list");
            // var li = list.children;
            // for (var i = 0; i < li.length; i++) {
            //     (function (m) {
            //         li[i].onclick = function () {
            //             alert(m);  // 结果总是3.而不是0,1,2
            //         }
            //     })(i);
    
            // }
        </script>
        <script>
            //先主线,后异步,
            // test()
            // function test() {
            //     for (var i = 0; i <= 10; i++) {
    
            //         setTimeout(function () {
            //             console.log(i);
            //         },
            //             0)
            //     }
            // }
        </script>
        <script>
            //自调函数 与 多赋值等号
            var a = 10;
            (function () {
                var a = b = 100 // a=b->b没有var则创建全局变量b->b=100 
            })();
            console.log(a + '+' + b);// a=undifind b=100
    
    
        </script>
        <script>
            //闭包
            // function fun() {
            //     var name = "test"
            //     return function () {
            //         var b = 0;
            //         console.log(name);
            //     }
            // }
            // var fn = fun();
            // console.log(fn.b);
            // //fn();
    
            //闭包
            // function fun() {
            //     var name = "test"
            //     this.sayname = function () {
            //         console.log(name)
            //     }
            // }
            // var bb = new fun();
            // bb.sayname();
        </script>
    </body>
    </html>
    

    相关文章

      网友评论

          本文标题:预解析预闭包的例子

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