我在JavaScript中搜索了一些与使用 for loop 和 setInterval 函数相关的问题,但我找不到具体的答案这个片段不起作用。有人可以解释一下发生在幕后的事情以及为什么这段代码根本没有印刷任何内容?
for (let i = 0; i++; i < 10) {
window.setInterval(function () {
console.log('Test');
} , 100)
}
答案 0 :(得分:2)
您的for
循环不正确。条件需要是for
循环中的第二个语句。
以下代码应该有效。
for (let i = 0; i < 10 ; i++; ) {
window.setInterval(function () {
console.log('Test');
} , 100)
}
预期语法for
循环。您可以阅读更多here
for([initialization]; [condition]; [final-expression])
声明
编辑1:
虽然所有答案(包括我的)都提到条件需要是for
循环中的第二个语句,这是正确的。还有一个重要的行为。
for循环for (let i = 0; i++; i < 10)
在语法方面实际上是正确的,甚至javascript运行时也执行此代码。
但是,就像你的情况一样,如果条件评估为 falsy 值,那么它将退出循环。
将for循环for (let i = 0; i++; i < 10)
分解为每个单独的构造
初始化: let i = 0;
此语句将变量i的值初始化为0.
条件: i++;
Javascript评估语句以检查语句是否为真。在i++
的情况下,运行时首先检查i的当前值0
。由于0
被视为 falsy 值,因此条件的计算结果为false,因此不会执行该语句。此外,i++
语句是后增量,它基本上会增加i,然后生成i的原始值。
所以,如果您使用i=1
的intiliaztion编写如下所示的循环,那么它会起作用,尽管它将无限运行,直到浏览器/服务器崩溃为条件i++
永远评价为真。我希望这是有道理的。
for (let i = 1; i++; i < 10) {
// Statements would run
}
或
for (let i = 0; ++i; i < 10) { **// Pre increment**
// Statements would run
}
或强>
for (let i = 0; i=i+1; i < 10) { **// increment i by assigment
// Statements would run
}
道格拉斯·克罗克福德在他的书“好零件”中提到了++
&amp; --
以及它如何让读者感到困惑。
答案 1 :(得分:1)
你的for循环语法错误,应该是
for (let i = 0; i < 10; i++)
每次迭代循环时,setInterval代码每100毫秒运行一次(每100毫秒10次)
答案 2 :(得分:1)
与setInterval
无关,您只是导致for
循环格式错误:
此:
for (let i = 0; i++; i < 10)
应该是这样的:
for (let i = 0; i < 10; i++)
首先声明循环的初始状态,然后是循环的终止状态,然后是循环的增量变化。