lodash.sortBy在节点REPL上重新分配lodash的值

时间:2015-04-16 00:10:10

标签: javascript node.js lodash

我去节点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。

1 个答案:

答案 0 :(得分:3)

没关系。我被一位同事告诉我&#34; _&#34;计算到节点REPL中最后返回的表达式。

来源:http://nodejs.org/api/repl.html 遗憾!