node.js 中的空循环行为
Posted
技术标签:
【中文标题】node.js 中的空循环行为【英文标题】:Empty for loop behavior in node.js 【发布时间】:2019-01-14 01:46:50 【问题描述】:我正在尝试测试 node.js 中的循环行为。在 javascript/node.js 中,for 循环是同步的,但如果它们在循环中没有语句怎么办。
例如:
console.log("START")
for(var i=0; i<100000000;i++)
console.log("END")
当我在 node.js 中运行上面的代码时,它只会打印:
START
END
执行完成。
但如果循环中有语句,则执行完整的循环然后结束:
console.log("START")
for(var i=0; i<100000000;i++)
console.log("LOOP "+i);
console.log("END")
输出是:
START
LOOP 0
LOOP 1
....
....
....
LOOP 99999999
END
那么如果node.js
中的for
循环中没有语句会怎样呢?
【问题讨论】:
它会像执行循环一样运行。你觉得哪里不对? 这是一个技巧问题吗? @appleapple 不,当循环中没有语句时,它就不会执行。 @OnkarJanwa 你是怎么检查的?我看不出输出有什么不同。你推断出CPU指令了吗?还是不停地设置断点? 这与 node.js 有什么关系? 【参考方案1】:我终于明白了。无论是 JavaScript 还是 Node.js,for 循环始终是同步的。并且 node.js 不会跳过一个空循环。
执行如下代码:
console.log("START")
for(var i=0; i<10000000000;i++)
console.log(i);
console.log("END")
输出是:
START
10000000000
END
【讨论】:
区别在于循环的运行长度。如果长度很小,您将看不到循环运行的任何时间。【参考方案2】:即使没有语句,是的,仍然有一些计算,如 initialization、condition 和/或 final-expression。
此外,有时人们确实使用 for 而没有声明。你可以看看MDN: Using for without a statement。
【讨论】:
以上是关于node.js 中的空循环行为的主要内容,如果未能解决你的问题,请参考以下文章
Node.js 进程在 AWS Fargate 中的行为如何?
JavaScript 中的事件循环和 Node.js 中的异步非阻塞 I/O 有啥区别?