《2018年9月20日》【连续352天】
标题:闭包引起的问题,使用立即执行函数解决;
内容:
function test()
{
var arr = [];
for (var i = 0; i < 10; i++)
{
arr[i] =function ()
{
document.write(i+" ");
}
}
return arr;
}
var myArr = test();
for (var j = 0; j < 10; j++)
{
myArr[j]();
}
//错误:以为输出0~9
因为arr数组里的函数共享了同一个i,最后i变成了10。
使用立即执行函数解决:
function test()
{
var arr = [];
for (var i = 0; i < 10; i++)
{
(function (j)
{
arr[j] =function ()
{
document.write(j+" ");
}
}(i));
}
return arr;
}