clearInterval 函数神秘地工作
clearInterval function working mysteriously
我们都知道当一个函数完成时可以return一个值。
现在考虑以下代码行
var t = setInterval(function() {
console.log('hey hi hello now 2 seconds have passed down');
} ,2000);
clearInterval(t);
现在,clearInterval()
将由 setInterval()
函数编辑的唯一 ID return 作为参数,只有在函数完全 return 后才会 returned =25=]。在我的代码中发生的事情是,在我的 setInterval()
函数 运行s 之前,它被清除了,这应该是不可能的,因为 setinterval()
在它的回调函数之前不会 return 任何东西已调用。
clearInterval()
函数如何能够在setinterval()
函数之前运行?
如果您在代码的第一行第一次调用 setInterval
函数,它会 returns 一个 ID。
这个ID与函数的调用无关,之后告诉JS去掉这个区间。所以什么都不会发生。
这些是发生的步骤:
// Step #1
var t = setInterval(
// Step #3
function () {console.log('hey hi hello now 2 seconds have passed down');}
, 2000);
clearInterval(t);// Step #2
所以问题是你在调用函数之前清除了间隔。但在声明之后。
Wrong!
1- 声明 -> 清除 -> 调用
Correct
1- 声明 -> 调用 -> 清除
如解决方案:
在 setInterval
内调用 clearInterval
。
像这样:
var t = setInterval(function () {
console.log('hey hi hello now 2 seconds have passed down');
clearInterval(t);
}, 2000);
setinterval()
will not return anything until its callback function has been called
这完全不是真的。立即设置间隔 return 的唯一句柄,这样您甚至可以在第一个函数 运行 之前删除间隔。 回调 函数,所以你传递给 setInterval
的第一个参数在 运行 之前不会 return 任何东西。但即使在 运行ning 之后,它的 return 值也永远不会分配回变量 hloding 唯一句柄(在你的情况下 - var t
)。
setInterval
将一段代码放到堆栈底部,因此其余代码在它之前执行。实际上,您在执行函数之前清除间隔。
我们都知道当一个函数完成时可以return一个值。 现在考虑以下代码行
var t = setInterval(function() {
console.log('hey hi hello now 2 seconds have passed down');
} ,2000);
clearInterval(t);
现在,clearInterval()
将由 setInterval()
函数编辑的唯一 ID return 作为参数,只有在函数完全 return 后才会 returned =25=]。在我的代码中发生的事情是,在我的 setInterval()
函数 运行s 之前,它被清除了,这应该是不可能的,因为 setinterval()
在它的回调函数之前不会 return 任何东西已调用。
clearInterval()
函数如何能够在setinterval()
函数之前运行?
如果您在代码的第一行第一次调用 setInterval
函数,它会 returns 一个 ID。
这个ID与函数的调用无关,之后告诉JS去掉这个区间。所以什么都不会发生。
这些是发生的步骤:
// Step #1
var t = setInterval(
// Step #3
function () {console.log('hey hi hello now 2 seconds have passed down');}
, 2000);
clearInterval(t);// Step #2
所以问题是你在调用函数之前清除了间隔。但在声明之后。
Wrong!
1- 声明 -> 清除 -> 调用
Correct
1- 声明 -> 调用 -> 清除
如解决方案:
在 setInterval
内调用 clearInterval
。
像这样:
var t = setInterval(function () {
console.log('hey hi hello now 2 seconds have passed down');
clearInterval(t);
}, 2000);
setinterval()
will not return anything until its callback function has been called
这完全不是真的。立即设置间隔 return 的唯一句柄,这样您甚至可以在第一个函数 运行 之前删除间隔。 回调 函数,所以你传递给 setInterval
的第一个参数在 运行 之前不会 return 任何东西。但即使在 运行ning 之后,它的 return 值也永远不会分配回变量 hloding 唯一句柄(在你的情况下 - var t
)。
setInterval
将一段代码放到堆栈底部,因此其余代码在它之前执行。实际上,您在执行函数之前清除间隔。