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澄清这一点。