根据 Underscore.JS 来源(https://github.com/jashkenas/underscore/blob/master/underscore.js):
// Start chaining a wrapped Underscore object.
chain: function() {
this._chain = true;
return this;
},
// Extracts the result from a wrapped and chained object.
value: function() {
return this._wrapped;
}
chain() 和 value() 函数只是 Underscore 对象的简单包装器。
因此,如果我使用以下构造:
_.chain(someCollection)
.map(function1)
.map(function2)
.map(function3)
.value()
Underscore 将创建两个中间集合并执行三个枚举。
为什么 chain() 和 value() 方法没有像 LINQ 实现它的方法那样被实现为惰性求值?例如,这个链可以被视为:
_.chain(someCollection)
.map(function(x){
return function3(function2(function1(x)));
})
.value();
这种实现有没有与 JS 相关的问题?