js的for循环闭包问题
一个简单的例子,如果想循环输出数组中的每一个数值我们可以利用for循环来输出例如:
这是最常见不过的一种了,i从0循环到5把数组中的5个值都输出出来,这里的i正好是arr数组的下标,所以循环出来了~但是看下面的例子又会跟我们想的不一样
text
link
这个时候的会始终弹出-1来,因为里面的函数(onclick=function(){})根本没有i这个变量,换句话说i是无法在这个函数中调用的,因为没有传进值来,所以js会去回溯到父级去找这个i变量,当找到i的时候这个for循环其实已经循环完了,这样i就边城了-1所以每次弹出的就都是-1了,想解决这个问题也简单,用闭包传参的形式就可以了代码如下:
text
link
这样就可以把i作为参数传给里面的函数使用了。