js问题 头疼啊
时间:2011-12-09
来源:互联网
JScript code
谁会指点一下
var s=0; for(var i=0;nn!=null&&i<nn.length;i++){//长度为10 alert(i+"test"); setInt=setTimeout((function(node){return function(){ if(s==i){ alert(s+"s"+i+"i");//这里的s和i为什么弹出10次10啊,怎么不是从0开始到10 var node=new Node(); node=mixIn(nn[i],node); node.type=typeToNum(node.type); node.position=new Position(node.position.top,node.position.left); nodes[node.index]=node; createNode(node); }else{ clearTimeout(setInt); } }})(node),3000); s=s+1; }
谁会指点一下
作者: yj1300918200 发布时间: 2011-12-09
第一次循环s = 0;先执行alert('0test');后执行setInt,但由于这个方法是3秒钟再执行(相当于多线程吧),所以s+=1先执行,此时s=1,
接着第二次循环,以此类推,当循环完10次后,s=10,i=10,还没有经过3秒,故等到三秒中后alert(‘10s10i’)才第一次打印,接着很快就打印其余9次了。
接着第二次循环,以此类推,当循环完10次后,s=10,i=10,还没有经过3秒,故等到三秒中后alert(‘10s10i’)才第一次打印,接着很快就打印其余9次了。
作者: EEXXTTJJSS 发布时间: 2011-12-09
真心看不懂你这段代码是想干什么。。作为形参的node,居然是在函数内部才定义。。这是典型的闭包问题,给你个简单的例子HTML code
var s = 0, setInt; for (var i = 0; i < 10; i++) { (function(){ var index = i; setInt = setTimeout(function(){ if (s === index) { alert("success! i: " + index); } else { alert("error! i: " + index); clearTimeout(setInt); } }, 3000); })(); }
作者: axiheyhey 发布时间: 2011-12-09
这是根据你的代码改的JScript code
var s = 0, setInt; for (var i = 0; i < 10; i++) {//长度为10 setInt = setTimeout((function(){ var _i = i; return function(){ if (s == _i) { alert("s: " + s + ", i: " + _i);//这里的s和i为什么弹出10次10啊,怎么不是从0开始到10 s++; } else { clearTimeout(setInt); } } })(), 3000); }
作者: axiheyhey 发布时间: 2011-12-09
引用 1 楼 eexxttjjss 的回复:
第一次循环s = 0;先执行alert('0test');后执行setInt,但由于这个方法是3秒钟再执行(相当于多线程吧),所以s+=1先执行,此时s=1,
接着第二次循环,以此类推,当循环完10次后,s=10,i=10,还没有经过3秒,故等到三秒中后alert(‘10s10i’)才第一次打印,接着很快就打印其余9次了。
第一次循环s = 0;先执行alert('0test');后执行setInt,但由于这个方法是3秒钟再执行(相当于多线程吧),所以s+=1先执行,此时s=1,
接着第二次循环,以此类推,当循环完10次后,s=10,i=10,还没有经过3秒,故等到三秒中后alert(‘10s10i’)才第一次打印,接着很快就打印其余9次了。
我是想让它停3秒再执行 s=s+1 和下次循环的
作者: yj1300918200 发布时间: 2011-12-09
类似
var a = 10;
var b = 0;
function test(){
b++;
if(b < a){
setTimeout("test()",5000);
}
alert(b);
}
test();
var a = 10;
var b = 0;
function test(){
b++;
if(b < a){
setTimeout("test()",5000);
}
alert(b);
}
test();
作者: EEXXTTJJSS 发布时间: 2011-12-09
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28