我们先来看一个例子
在JS方法里面设置一个for循环,输出每次循环的值,如下图
我们可以根据闭包的知识来更改一下for循环中的逻辑,利用闭包将i的值传递给a
这次在运行程序我们就可以看到输出内容是0开始输出了
结果如下图
JS中如果for循环中有异步方法,就需要用闭包的方式保留当前循环变量值
Jquery有Hover这个方法
$(selector)hover(inFunction,outFunction)
$("oul_li")hover(function(){$("oul_img")css("display","block");
},function(){
$("oul_img")css("display","none");
});你把下面的x 换成 i, 依然是5
这个很正常。
逻辑:
for循环里面,循环的值为 0 1 2 3 4
i的值 为 0 1 2 3 4 5
第一个i,是同一个i ,所以是5
下面的x 是for循环里的值,i 的最大值还是5代码:
<script type="text/javascript">
var v = "1,2,3,4,5,6,7,8,9,10,";
for (i=1;i<=10;i++) {
var x = vreplace(i+",","")
documentwrite("i="+i+"时:"+xsubstring(0,xlength-1)+"<br>")
}
</script>
结果:
i=1时:2,3,4,5,6,7,8,9,10
i=2时:1,3,4,5,6,7,8,9,10
i=3时:1,2,4,5,6,7,8,9,10
i=4时:1,2,3,5,6,7,8,9,10
i=5时:1,2,3,4,6,7,8,9,10
i=6时:1,2,3,4,5,7,8,9,10
i=7时:1,2,3,4,5,6,8,9,10
i=8时:1,2,3,4,5,6,7,9,10
i=9时:1,2,3,4,5,6,7,8,10
i=10时:1,2,3,4,5,6,7,8,9以循环10次为例
for循环:
for (var i=0; i<10;i++){}
while循环:
var i = 0;
while (true){
i ++;
if (i>=10) break;
//这里写要执行的语句
}i++运算是在循环之后执行的,不是循环之前
上面的步骤应该理解为:
首先,i为0,判断i<=5为true,执行documentwrite;
执行i++
i为1,判断i<=5为true,执行documentwrite;
执行i++
。。。。。。
i为5,判断i<=5为true,执行documentwrite;
执行i++
i为6,判断i<=5为false,循环终止
最终i为6,但是最后一次执行documentwrite时i为5,当i为6时就跳出循环了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)