预解析预闭包的例子

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

<!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>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容