for(i=0;i<5;i++){
setTimeout(function(){
console.log(i);
},2000)
}
2秒后输出5次5次。我理解这一点,但在五个出现之前,他身上有数字。当我再次执行此代码时,它会更改为其旧值增加5。它是什么?在控制台上编写代码,看看它输出的是什么,然后解释一下它是什么?
答案 0 :(得分:4)
它是evaluate语句的“result”值,对于循环,它是循环体中最后一个语句的结果值,它是setTimeout
调用的返回值。并that returns一个计时器ID(允许您取消超时)。
您还可以使用更简单的语句来查看此行为:
> 0;
< 0
> console.log(1);
1 // the output of the log()
< undefined
> var i=2;
< undefined // a declaration has no result
> var i=3; i;
< 3
> for (;i<3;i++) 4;
< undefined // the body was not evaluated
> for (;i<4;i++) 5;
< 5
注意前导箭头如何表示输入和结果输出。
答案 1 :(得分:1)
That number is the intervalID
在浏览器调试器中运行以下代码时,代码:
setTimeout(() => console.log('hello'), 2000);
回应就像
> 1822
> hello
您可以使用该intervalID删除清除超时
只是为了向您显示该号码的确认为intervalID
> var test = setTimeout(() => console.log('hello'), 2000); test;
< 11272
hello
> console.log(test);
11272
< undefined