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