Node.JS REPL 在我按下 Enter 键之前会计算什么类型的函数?

问题描述 投票:0回答:1

我注意到有时在 Node.JS REPL 中,它会计算当前表达式的结果, 甚至在我按下回车键之前。

但是这种行为让我困惑:它怎么知道我是否想评估它?我知道评估 4+5 并没有什么坏处,但如果它是 一个涉及繁重计算的函数怎么办? 它不会减慢我的机器速度吗?更糟糕的是,如果函数扰乱了某些内部状态(例如全局变量)怎么办?

我尝试用谷歌搜索,但没有成功。不过,我注意到两件有趣的事情:当我尝试递归地计算斐波那契数时,它会计算到 Fib(30),而不是 Fib(31)。我的猜测是,如果函数计算时间太长,Node.JS 就会放弃给我们“预览”。但我不太确定它内部是如何运作的。

那么,Node.JS 如何准确地知道它是否应该计算表达式?我们在按回车键之前看到的“结果预览”有名称吗?有办法禁用吗?

javascript node.js read-eval-print-loop
1个回答
3
投票

该功能称为急切评估,您可以在此问题上了解更多信息。

当您键入一个表达式时,该表达式会在超时的情况下进行计算(以防止繁重的计算),并且有一个限制:如果该表达式会导致副作用,则计算会停止。 (代码

© www.soinside.com 2019 - 2024. All rights reserved.