你不知道的javascript 上卷 读书笔记

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

</body>
<script type="text/javascript">

    {
        let j;
        for(j=0;j<10;j++){
            let i=j;
            console.log(i);
        }
    }

    //一个简单的闭包作用域考察
    function foo() {
        var b=a*2;
        function bar(c) {
            console.log(a,b,c);
        }
        bar(b*3);
    }
    foo(2);// 2 4 12

   //先后顺序并不一定靠谱
    a=2;
    var a;
    console.log(a);

    //闭包的demo
    function foo() {
        var a=2;
        function bar() {
            console.log(a);
        }
        return bar();
    }
    var baz=foo();

    // 循环和闭包
    for(var i=1;i<=5;i++){
        (function () {
            setTimeout(function timer() {
                console.log(i);

            },i*1000)
        })();
    }
    //调整让上面的循环和闭包能正常工作
    for(var i=1;i<=5;i++){
        (function (j) {
            setTimeout(function timer() {
                console.log(j);

            },j*1000)
        })(i);
    }
    //我们换成let来实现一次
    for(let i=1;i<=5;i++){
        setTimeout(function timer() {
            console.log(i);
        },i*1000)
    }

</script>
</html>
原文地址:https://www.cnblogs.com/zxyun/p/5733540.html