Node.js REPL中的.clear元命令

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

我已经在node.js REPL中的许多地方读到过.clear元命令是为了清除你可能在内存中的任何variables或闭包,而不需要重新启动REPL。

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

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

使用node命令时, .clear只是.clear的别名。 但是,如果从repl.start()开始REPL,则.clear会根据您的预期清除本地上下文,并且.break行为如所述。

这是从node启动的REPL实例.help样子:

 .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 

repl.start()开始的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将不再存在于上下文中。

谢谢@hexacyanide为您的答案!

这是两个截图。

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

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

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

再次感谢hexacyanide澄清这一点。