function a(){ var i=0; } a();
这样的代码是典型的没有闭包的代码:
for(var i = 0; i < 9;i++){ a.childNodes[i].onclick = function(){ alert(i); }; }
for(var i = 0; i < 9;i++){ var fn = function(m){ var i = m; // 利用fn保存i。 return function(){ alert(i); // 我们已经利用闭包,把变量i保存起来了 }; }; a.childNodes[i].onclick = fn(i); }