js设置for循环阻塞

参考代码如下:

<!DOCTYPE html>
<html>
    <!-- 测试for循环的阻塞机制 -->
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <script type="text/javascript">
            // for (var i = 0; i < 3; i++) {
            //     setTimeout(function() {
            //         console.log(i);
            //     }, (i + 1) * 1000);
            // }

            for (var i = 0; i < 3; i++) {
                (function(i) {
                    setTimeout(function() {
                        console.log(i);
                    }, (i + 1) * 1000);
                })(i)
            }
        </script>
    </body>
</html>

上面代码中,第二个for循环设置了阻塞,所以最终输出的是:0  1  2;