闭包例子

作者: 阿蒙 时间: 2017-7-5 标签: JavaScript 浏览: 1778 评论: 0

var value1 = 0, value2 = 0, value3 = 0;
    for ( var i = 1; i <= 3; i++) {
        var i2 = i;
        (function() {
            var i3 = i;
            setTimeout(function() {
                console.log(i,i2,i3);
                value1 += i
                value2 += i2;
                value3 += i3;
            }, 0);
        })();
    }
    setTimeout(function() {
        console.log(value1, value2, value3);  // 4,3,1 4,3,2 4,3,3   12,9,6

}, 100);

for循环执行完 i的值为4, i2为3 (i为4的时候没进入for循环), 局部的闭包缓存了i的值 ,所以i的值正常。 所以最终结果是 12,9,6



var value1 = 0, value2 = 0, value3 = 0;
    for ( var i = 1; i <= 3; i++) {
        var i2 = i;
        (function() {
            var i3 = i;
            (function () {
                console.log(i,i2,i3);
                value1 += i
                value2 += i2;
                value3 += i3;
            })()
        })();
    }
    setTimeout(function() {
        console.log(value1, value2, value3);  // 1,1,1   2,2,2  3,3,3   6,6,6
    }, 100);




0

本文相关标签: 原生JS

赞助商

发表评论: