for (var i = 0; i < 10; i++) {
    setTimeout(function (a) {
        return function () {
            console.log(a);
        };
    }(i), 1000);
}
for (var i = 0; i < 10; i++) {
    (function(a) {
        setTimeout(function() {
            console.log(a);
        }, 1000);
    })(i);
}
这两种写法都能跑出正确结果,有没有一个 convention 说用哪一个比较好?还是其中某一种其实是有缺陷的?谢谢。