JS中如何解决for循环中的延迟执行问题

JS中如何解决for循环中的延迟执行问题,第1张

我们先来看一个例子
在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时就跳出循环了


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/13324546.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-15
下一篇 2023-07-15

发表评论

登录后才能评论

评论列表(0条)

保存