首页 > 解决方案 > 甚至在我按下 Enter 之前,Node.JS REPL 会评估什么类型的函数?

问题描述

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

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

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

我尝试用谷歌搜索它,但收效甚微。那么,Node.JS 如何准确地知道它是否应该评估一个表达式呢?我们在按 Enter 之前看到的“结果预览”是否有名称?有没有办法禁用它?

标签: javascriptnode.jsread-eval-print-loop

解决方案


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

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


推荐阅读