Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 有人能帮我描述一下这个打字稿吗? for(设i=0;i_Typescript - Fatal编程技术网

Typescript 有人能帮我描述一下这个打字稿吗? for(设i=0;i

Typescript 有人能帮我描述一下这个打字稿吗? for(设i=0;i,typescript,Typescript,运行时: 0 1. 2. 3. 4. 5. 6. 7. 8. 9 但我无法理解它是如何工作的,就像我们将I乘以100一样。setTimeout()方法在指定的毫秒数后调用函数或计算表达式 所以对于第一个循环,你有一个延迟i*100=0,然后延迟变成100,然后200,依此类推,所以代码每次都记录i,但延迟不同。i从0到9,在每次迭代中,它将超时设置为i乘以100 也就是说,您最终会设置10个超时,分别为0ms(0*100)、100ms(1*100)、200ms(2*100),等等,直到900ms

运行时: 0 1. 2. 3. 4. 5. 6. 7. 8. 9 但我无法理解它是如何工作的,就像我们将I乘以100一样。
setTimeout()
方法在指定的毫秒数后调用函数或计算表达式


所以对于第一个循环,你有一个延迟
i*100=0
,然后延迟变成
100
,然后
200
,依此类推,所以代码每次都记录
i
,但延迟不同。

i
0
9
,在每次迭代中,它将超时设置为
i
乘以100

也就是说,您最终会设置10个超时,分别为
0ms
0*100
)、
100ms
1*100
)、
200ms
2*100
),等等,直到
900ms
9*100

i | i*100 |延迟
--+---------+------
0 | 0*100 | 0毫秒
1 | 1*100 | 100ms
2 | 2*100 | 200ms
3 | 3*100 | 300ms
4 | 4*100 | 400ms
5 | 5*100 | 500ms
6 | 6*100 | 600ms
7 | 7*100 | 700ms
8 | 8*100 | 800毫秒
9 | 9*100 | 900毫秒

For循环总共调用了setTimeout()函数10次

因此,如果简化,它可以写如下

for (let i = 0; i < 10; i++) {
  setTimeout(function() {
    console.log(i);
  }, 100 * i);
}
因此,对于0到9范围内的每个数字,
setTimeout
函数为每100毫秒的间隔设置
console.log()
方法。尝试替换100到1000,您将看到数字以1秒的延迟打印


如果你去掉i乘以100,只保留一个特定的值(比如只有100),看起来所有的数字都是在间隔值之后同时打印出来的。

谢谢大家的帮助,我是个新手,所以我没有正确理解它

setTimeout(function() { console.log(0); }, 0); # when i=0

setTimeout(function() { console.log(1); }, 100); # when i=1

setTimeout(function() { console.log(2); }, 200); # when i=2

setTimeout(function() { console.log(3); }, 300); # when i=3

and so on...
settimeout(函数、参数)
for(设i=0;i<10;i++){
setTimeout(函数(){
控制台日志(i);
},100*i);
}
当我们执行它时,i的值在乘以100后不会改变,但只会在输出中提供100毫秒的延迟,并且每增加100毫秒。
最后延迟为900毫秒。

这是否回答了您的问题
100*i
是显示消息的*超时`。
settimeout(function, parameter)

for (let i = 0; i < 10; i++) {
    setTimeout(function() {
      console.log(i);
    }, 100 * i);
  }