lodash.js中的惰性评估是什么?

时间:2018-07-04 11:27:23

标签: javascript

lodash.js中的惰性评估如何工作?

var chosen = _(gems).filter(priceLt(10)).take(3).value();

这是如何工作的?

1 个答案:

答案 0 :(得分:0)

lodash 中的延迟评估只是记住函数并延迟评估,直到您调用 value()。以_([1,2,3]).map(x => x+1).filter(x => x > 0).value()

为例
// wrap value in a lazy wrapper.
_([1,2,3]) => {
  value: [1,2,3]
  actions: []
}

// register functions
.map() => {
  value: [1,2,3]
  actions: [map]
}

.filter() => {
  value: [1,2,3]
  actions: [map, filter]
}

// unwrap and evaluate
.value() => [1,2,3].map(x => x+1).filter(x => x > 0) => [2,3,4]

注意没有执行任何函数,只是在最后一步之前记住了函数描述。