.clear
元命令完全与.break
元命令相同,还是它的变体?我知道它们都可以用来突破...
提示符(表示你还没有完成你的命令)而不退出REPL,这可以通过点击CTRL+C
来完成。但.clear
和.break
之间是否存在根本差异?
我已经在很多地方读过,在node.js REPL中,.clear
元命令是为了消除你在内存中可能没有重启REPL的任何变量或闭包。< / p>
预期的行为是否可以声明变量,运行.clear
命令,再次调用该变量,发现它是空的/非声明的?在我使用.clear
命令时,我没有发现它可以工作。
答案 0 :(得分:6)
.break
和.clear
命令的行为会有所不同,具体取决于您是从node
命令启动REPL还是使用repl.start()
。
使用node
命令时,.clear
只是.break
的别名。但是,如果您从repl.start()
启动REPL,则.clear
将按照您的预期清除本地上下文,.break
的行为符合规定。
这是.help
从node
开始的REPL实例看起来的样子:
.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
。
答案 1 :(得分:1)
感谢@hexacyanide的回答!
这是两个截图。
在第一个屏幕截图中,REPL以编程方式实例化(通过运行repltest.js
脚本),因此.clear
元命令会从内存中清除变量。您还可以看到.help
命令在脚本实例化REPL时为.clear
返回不同的行为。
在第二个屏幕截图中,.clear
有不同的行为。这里REPL直接通过命令实例化(只需在CMD
中运行节点)。在这种情况下,变量不会从内存中清除,.help
命令只会告诉我们.clear
是.break
的别名。
再次感谢六氰化物澄清这一点。