javascript - 甚至在我按下 Enter 之前,Node.JS REPL 会评估什么类型的函数?
问题描述
我注意到有时在 Node.JS REPL 中,它会评估当前表达式的结果, 甚至在我按下回车键之前。
但这种行为让我感到困惑:它怎么知道我是否想评估它?我知道评估 4+5 并没有什么坏处,但是如果它是一个涉及大量计算的函数呢?它不会减慢我的机器速度吗?更糟糕的是,如果函数弄乱了一些内部状态,比如全局变量,该怎么办?
我试图用谷歌搜索,但没有成功。不过,我注意到了两件有趣的事情:当我尝试递归地评估 Fibonacci 时,它会一直评估到 Fib(30),而不是Fib(31)。我的猜测是,如果函数计算时间过长,Node.JS 就会放弃给我们“预览”。但我不太确定它在内部是如何工作的。
我尝试用谷歌搜索它,但收效甚微。那么,Node.JS 如何准确地知道它是否应该评估一个表达式呢?我们在按 Enter 之前看到的“结果预览”是否有名称?有没有办法禁用它?
解决方案
该功能称为热切评估,您可以在此问题上了解有关它的更多信息。
当您键入一个表达式时,该表达式会在超时(以防止大量计算)的情况下进行评估,并且如果表达式会导致副作用,则停止评估。(代码)
推荐阅读
- python - 如何使用请求从互联网上的 json 文件中获取信息
- c# - Docusign“无法加载文件或程序集 Restsharp”错误
- javascript - 为什么在 JavaScript 中对数组“B”的更改会传播到数组“A”(用于定义“B”但此后从未直接修改)?
- css - 如何在悬停时使顶部弹性框行不向下推底部弹性框行
- php - 预订系统的 PHP 对象/数组算法
- python - Django rest 框架简单模型序列化器列表视图需要永远显示 10 条记录
- apache-nifi - 如何在 Apache NIFI 中将机器学习应用于流数据
- regex - Notepad++ 正则表达式 - 如何从此列表中删除代理?
- sas - 将Stata“egen,group”转换为SAS
- kubernetes - kubernetes 容器中的 redis-cluster 在 spinup 时重新启动