闭包例子
作者: 阿蒙 时间: 2017-7-5 标签: JavaScript 浏览: 2420 评论: 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);
本文相关标签: 原生JS
发表评论: