我去节点REPL并执行此操作:
> _ = require('lodash');
> // it displays the whole lodash object
> _.sortBy(['1234', '123'], function (element) { return element.length; });
> [ '123', '1234' ]
> _.sortBy(['1234', '123'], function (element) { return element.length; });
> TypeError: Object 123,1234 has no method 'sortBy'
at repl:1:3
at REPLServer.self.eval (repl.js:110:21)
at repl.js:249:20
at REPLServer.self.eval (repl.js:122:7)
at Interface.<anonymous> (repl.js:239:12)
at Interface.EventEmitter.emit (events.js:95:17)
at Interface._onLine (readline.js:202:10)
at Interface._line (readline.js:531:8)
at Interface._ttyWrite (readline.js:760:14)
at ReadStream.onkeypress (readline.js:99:10)
> _
> [ '123', '1234' ]
看起来它重新定义了&#34; _&#34;我将作为参数传递给sortBy的集合的对象。
如果我在脚本上放置相同的代码并运行节点解释器,则不会发生这种情况。它不会取代&#34; _&#34;使用我作为参数传递的列表并成功执行sortBy:
test.js内容:
var _ = require('lodash');
console.log(_.sortBy(['1234', '123'], function (element) { return element.length; }));
console.log(_.sortBy(['1234', '123'], function (element) { return element.length; }));
然后:
$ node test.js
[ '123', '1234' ]
[ '123', '1234' ]
此时我完全感到困惑。有没有人知道为什么会这样?我在这里错过了什么吗?如果没有,我是否可以相信,如果我在nodejs应用程序上使用sortBy,那么这种情况不会发生?
相关资料: 在MacOS 10.10.1上使用lodash 3.6.0和节点0.10.26。
答案 0 :(得分:3)
没关系。我被一位同事告诉我&#34; _&#34;计算到节点REPL中最后返回的表达式。