面试题部分收录

1.经典的闭包

for(var i=0; i<10; i++) {
    setTimeout(function () {
        console.log(i);
    }, 0);
};

解析:输出10个10。

修改使结果为0123456789:

for(var i=0;i<10; i++) {
    setTimeout( function (j) {
        return function () { console.log(j); }
        }(i), 0
    );
};

或者

for(var i=0; i<10; i++) {
    !function (j) {
        setTimeout(function() {console.log(j);}, 0);
    }(i);
};

或者es6

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

猜你喜欢

转载自www.cnblogs.com/yuqlblog/p/9132077.html