为什么require('underscore')在node.js REPL中执行时返回undefined?

当我在我的控制台中运行节点并键入var _ = require('underscore');_结束未定义。 如果我把相同的代码放在一个文件中并执行它,下划线库会按照预期被包含。

 $ node > var _ = require('underscore'); > console.log(_) undefined // underscore library does not load > var async = require('async'); undefined > console.log(async) // async library does { noConflict: [Function], nextTick: [Function], forEach: [Function], ... > 

但是,作为node test.js执行的.js文件中的相同代码显示了两个库的加载情况。 这是怎么回事?

Node repl将_绑定到上次评估的input值; 它覆盖你的_绑定在var _ = ...; 。 另请参阅repl上的node.js文档 。

无论如何取代... ,情况都是如此,例如:

 $ node > var _ = "any value"; undefined > _ undefined