在本文中,您将会了解到关于JavaScript:For循环超时的新资讯,同时我们还将为您解释javascript中for循环的相关在本文中,我们将带你探索JavaScript:For循环超时的奥秘,分
在本文中,您将会了解到关于JavaScript:For循环超时的新资讯,同时我们还将为您解释javascript中for循环的相关在本文中,我们将带你探索JavaScript:For循环超时的奥秘,分析javascript中for循环的特点,并给出一些关于16JavaScript for循环、for 循环性能比较 提高for循环的效率_javascript技巧、For循环仅运行1次-JavaScript、JavaScript for循环的实用技巧。
本文目录一览:- JavaScript:For循环超时(javascript中for循环)
- 16JavaScript for循环
- for 循环性能比较 提高for循环的效率_javascript技巧
- For循环仅运行1次-JavaScript
- JavaScript for循环
JavaScript:For循环超时(javascript中for循环)
我希望我的for循环不应该一次执行,而要在每次迭代后等待超时。例如:
for(var i=0; i<10; i++) { console.log(i); //wait for 1000}
我发现了很多关于堆栈溢出的解决方案,例如:
for (var i=0;i<=10;i++) { (function(ind) { setTimeout(function(){console.log(ind);}, 3000); })(i);}
但是在所有实现中,循环最初等待3000毫秒,然后立即执行整个for
循环。有没有一种方法可以等待1000毫秒后调用每次迭代。
答案1
小编典典您可以使用简单的数学方法来解决:
for (var i=0;i<=10;i++) { (function(ind) { setTimeout(function(){console.log(ind);}, 1000 + (3000 * ind)); })(i);}
1000ms:0
4000ms:1
7000ms:2
10000ms:3
13000ms:4
…
跟随评论
您的请求似乎有点模糊。如果您想在上一次超时后执行某项操作,则可以设置一个限制并比较当前索引:
var limit = 10for (var i=0;i<=limit;i++) { (function(ind) { setTimeout(function(){ console.log(ind); if(ind === limit){ console.log(''It was the last one''); } }, 1000 + (3000 * ind)); })(i);}
我想我知道你想要什么…
它只是要做
for (var i=0;i<=10;i++) { (function(ind) { setTimeout(function(){console.log(ind);}, 1000 * ind); })(i);}
16JavaScript for循环
1.JavaScript 循环
如果希望一遍又一遍地运行相同的代码,并且每次的值都不同,那么使用循环是很方便的。
我们可以这样输出数组的值:
<span><<span>script<span>><span>
arr<span>=<span>[<span>"<span>1<span>"<span>,<span>"<span>2<span>"<span>,<span>"<span>3<span>"<span>,<span>"<span>4<span>"<span>,<span>"<span>5<span>"<span>,<span>"<span>6<span>"<span>];
<span>for<span> (<span>var<span> i<span>=<span>0<span>;i<span><<span>arr.length;i<span>++<span>){
document.write(arr[i] <span>+ <span>"<span>
<span>"<span>);
}
<span></<span>script<span>>
<span></<span>body<span>>
<span></<span>html<span>>
结果:
2.不同类型的循环
JavaScript 支持不同类型的循环:
- for - 循环代码块一定的次数
- for/in - 循环遍历对象的属性
- while - 当指定的条件为 true 时循环指定的代码块
- do/while - 同样当指定的条件为 true 时循环指定的代码块
3.For 循环
for 循环是您在希望创建循环时常会用到的工具。
下面是 for 循环的语法:
语句 1 (代码块)开始前执行
语句 2 定义运行循环(代码块)的条件
语句 3 在循环(代码块)已被执行之后执行
运行结果:
for中的 语句 1
通常我们会使用语句 1 初始化循环中所用的变量 (var i=0)。
语句 1 是可选的,也就是说不使用语句 1 也可以。
我们可以在语句 1 中:
如:
"
同时还可以省略语句 1(比如在循环开始前已经设置了值时):
如:
"
for中的 语句 2
通常语句 2 用于评估初始变量的条件。
语句 2 同样是可选的。
如果语句 2 返回 true,则循环再次开始,如果返回 false,则循环将结束。
注意:如果我们省略了语句 2,那么必须在循环内提供 break。否则循环就无法停下来。这样有可能令浏览器崩溃。
for中的 语句 3
通常语句 3 会增加初始变量的值。
语句 3 也是可选的。
语句 3 有多种用法。增量可以是负数 (i--),或者更大 (i=i+15)。
语句 3 也可以省略(比如当循环内部有相应的代码时):
"++
4.For/In 循环
JavaScript for/in 语句循环遍历对象的属性:
实例:
运行结果:
fdb8cd83387f7c2.png" alt="">
for 循环性能比较 提高for循环的效率_javascript技巧
for(int i=1,n=tempUser.length;i
虽然得出这样的结果,但和自己心里想的确完全相反的。所有当然就回复说差不多。
今天又发现一位前辈的blog中正好有对这个帖子的回应。他做了测试,内容大致是前面的帖子的问题应该是差不多的,但是他又更深入的进行测试,得出:在有情况for(int i=0;i
class Program {
static void Main(string[] args) {
string s;
s = Console.ReadLine();
while(s != "0") {
Person p = new Person(10000000);
Console.WriteLine("for(int i=0;i
long l1 = DateTime.Now.Ticks;
for(int i = 0; i //Console.Write(lenArray[i]);
}
long l2 = DateTime.Now.Ticks;
Console.WriteLine("Ending.\nTime is : " + (l2 - l1).ToString());
Console.WriteLine("for(int i=0,n=lenArray.length;i
long l3 = DateTime.Now.Ticks;
for(int i = 0, n = p.Child.Alias.Length; i //Console.Write(lenArray[i]);
}
long l4 = DateTime.Now.Ticks;
Console.WriteLine("Ending.\nTime is : " + (l4 - l3).ToString());
s = Console.ReadLine();
}
Console.Read();
}
}
其中数据量越大,类越大,差别越明显。
结论:影响应该在,变量在每次循环都要访问下一级变量的原因。如果只是简单的a.length可能编译器对这样的循环操作有优化,将a.length保存到了内存或一个比内存更块的地方,而多级就没有这么幸运了。
我们都知道for(int i=0;i
For循环仅运行1次-JavaScript
您有一个return
,它将中断迭代。
在您的for循环中删除return语句
,在for循环块外设置return语句,否则迭代会停止
var cmpz_disabled_dates=$.parseJSON(disabled_dates);
var date = new Date();
console.log(cmpz_disabled_dates);
for (i = 0; i < cmpz_disabled_dates.length; i++) {
var type = cmpz_disabled_dates[i]["type"];
if(type === "ebdida_day") {
var disabled_day = Number(cmpz_disabled_dates[i]["disabled"]) + 1;
if(disabled_day == 8) {
disabled_day = 0;
}
var day = date.getDay();
console.log(i,date,day,disabled_day);
}
return [(disabled_day != day)];
}