微智科技网
您的当前位置:首页JS之经典for循环闭包问题解决方法

JS之经典for循环闭包问题解决方法

来源:微智科技网
JS之经典for循环闭包问题解决⽅法

Title


闭包经典实例

  • 1
  • 2
  • 3
  • 4
  • 5

像这样⼀个代码⽚段,初学者会理所当然地认为依次点击Li会弹出相应的0、1、2、3、4 但实际结果是每次都是4

原因是:每次点击输出i的时候,函数内部没有i,就从外部函数查找,⽽外部函数的值是每⼀次循环后的值4,所以每次点击输出的都是4解决办法⼀:加⼀层闭包,i 以函数参数形式传递给内层函数:

(function (i){

liList[i].onclick=function( ){ alert('当前点击第'+ i+'个'); } })(i)

解决办法⼆:找个属性将i值保存起来,然后弹出这个值

liList[i].number=i;

liList[i].onclick=function(){ alert(this.number) }

因篇幅问题不能全部显示,请点此查看更多更全内容