在Node.js REPL中,为什么会发生这种情况?

所以当我发现一些非常奇怪的东西时,我正在玩Node.js REPL和Underscore库。 如果我require("underscore") ,variables_被全局设置(显然)。 然后,当我试图运行一个简单的命令,如console.log(_.isEmpty)它打印[Function] (显然,再次)。 但是,在_.isEmpty运行console.log(_)后,它会打印[Function]因为variables_被设置为_.isEmpty

为什么这样做呢? 如果我从一个js文件运行相同的代码,这不会发生。 这是一个正常的节点事情还是这是一个总的错误?

仅供参考:节点v.10.10.10

节点的REPL总是将_设置为最后一行的结果。

 > 2 2 > _ 2 > 2+2 4 > _ 4 > 

您需要使用不同的标识符:

 var u = require("underscore"); u.isEmpty