JS在外部函数循环中使用闭包的问题
function tab(obj){
var target = document.getElementById(obj);
var spans = target.getElementsByTagName("span");
var lis = target.getElementsByTagName("li");
for(var i=0;i<spans.length;i++)
{
spans[i].onmouseover = function (num) {
return function(){
for(var j=0; j<spans.length;j++)
{
spans[j].className = "";
lis[j].className = "";
}
spans[num].className = "current";
lis[num].className = "show";
}
}(i);
}
函数如上,如果我调用此函数,外部函数循环运行之后,return 里面的匿名函数,因为num的参数赋值是在外部函数作用域内,使得外部函数并没有被删除而是继续保存在内存中,是否现在已经存在i=0-5的6个匿名函数了呢?
但是疑惑的是这样还可以继续触发鼠标移动事件吗?对闭包不是很了解,之前接触的闭包都是使用一个全局变量进行赋值调用,对于事件调用没接触过,在此函数中运行机制是怎样的?