3

元命令与.clear元命令完全相同.break还是它的变体?我知道它们都可以用来在...不退出 REPL 的情况下跳出提示符(表明您还没有完成命令),可以通过点击CTRL+C. .clear但是和之间有什么根本区别.break吗?

我在很多地方读到过,在 node.js REPL 中,.clear元命令旨在清除内存中可能存在的任何变量或闭包,而无需重新启动 REPL。

预期的行为是否可以让我声明一个变量、运行.clear命令并再次调用该变量,发现它为空/未声明?在我使用该.clear命令时,我还没有发现它可以工作。

4

2 回答 2

9

.break和命令的.clear行为会有所不同,具体取决于您是从node命令启动 REPL 还是使用repl.start().

使用node命令时,.clear只是.break. 但是,如果您从 , 启动 REPL repl.start().clear则将按照您的预期清除本地上下文,并.break按照说明的方式运行。

这是.help从以下开始的 REPL 实例的样子node

.break  Sometimes you get stuck, this gets you out
.clear  Alias for .break
.exit   Exit the repl
.help   Show repl options
.load   Load JS from a file into the REPL session
.save   Save all evaluated commands in this REPL session to a file

这就是以编程方式启动时的样子:

.break  Sometimes you get stuck, this gets you out
.clear  Break, and also clear the local context
.exit   Exit the repl
.help   Show repl options
.load   Load JS from a file into the REPL session
.save   Save all evaluated commands in this REPL session to a file

.clear在 REPL 中使用也repl.start()将显示以下内容:

Clearing context...

下面是一个以编程方式使用 REPL 的示例:

var repl = require('repl');
var str = 'We can pass variables into a context.';

repl.start().context.str2 = str;

在此之后,我们打开了一个 CLI。如果我们键入str2,那么您将获得str. 如果清除上下文,那么str2上下文内部将不再存在。

于 2013-09-24T01:09:24.863 回答
1

感谢@hexacyanide 的回答!

这是两张截图。

在第一个屏幕截图中,REPL 以编程方式实例化(通过运行repltest.js脚本),因此.clear元命令从内存中清除变量。您还可以看到,当 REPL 被脚本实例化时,该.help命令会返回不同的行为。.clear

然而,在第二个屏幕截图中,.clear有不同的行为。这里 REPL 是通过命令直接实例化的(只需运行 node in CMD)。在这种情况下,变量不会从内存中清除,该.help命令只告诉我们这.clear.break.

以编程方式实例化 通过命令实例化

再次感谢六氰化物澄清这一点。

于 2013-09-24T05:38:44.903 回答