--操作员无法使用javascript
大家好,我正在尝试使用setInterval函数我的代码是:--操作员无法使用javascript,javascript,decrement,Javascript,Decrement,大家好,我正在尝试使用setInterval函数我的代码是: var int = setInterval(function() { var x = 0; x--; document.body.innerHTML = x; }, 30); 但这只是打印-1——没什么了,为什么会这样?有人能告诉我吗?因为你在函数中声明变量,函数每30毫秒调用一次(这是setInterval的性质),它将创建一个新变量x并为其赋值0,然后从中减去1。因此,每次将为-1。要解决此问题,您可以执
var int = setInterval(function() {
var x = 0;
x--;
document.body.innerHTML = x;
}, 30);
但这只是打印-1——没什么了,为什么会这样?有人能告诉我吗?因为你在函数中声明变量,函数每30毫秒调用一次(这是setInterval的性质),它将创建一个新变量x并为其赋值0,然后从中减去1。因此,每次将为-1。要解决此问题,您可以执行以下操作:
var x = 0;
var int = setInterval(function() {
x--;
document.body.innerHTML = x;
}, 30);
尽管是公平警告:这将导致无限循环,因为每次运行时都将变量设置为0,然后减去1。你总是会得到-1你期望它做什么?为什么?您需要将变量声明移出函数。
var x=0
将每次重置x
的值。尝试在setInterval
调用之外声明x
,例如:var x=0;var int=setInterval(…)
尽管有公平的警告:这将导致无限循环
不完全是这样,因为它实际上不是一个循环-它将安排代码无限次地运行。这听起来像tomayto-tomahto,但这是一个重要的区别,一个无限循环表明程序将被困在那里,并且通常表示一个问题。相比之下,setInterval
不会阻止其他代码运行。此外,它可以通过从应用程序的任何部分执行clearInterval(int)
来终止,而不是在循环结构中仅具有break
或return
选项。