根据 Underscore.JS 的源代码(https://github.com/jashkenas/underscore/blob/master/underscore.js):
这种实现方式是否存在与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相关的问题?