javaScript学习JavaScript深究JavaScript

JavaScript Lazy Evaluation 惰性求值

2015-10-08  本文已影响339人  jProvim

什麼是Lazy Evaluation (惰性求值)?

簡單點說就是, 按需索取, 能不多做事, 絕對不做.

好處, 提高Performance: Code Execution, Memory Usage

例子

比如我們生成100個值

var oneHunderItems = function(end){
     var results = [];
     for(var i=0; i< end; ++i){
          results.push(i);
     }
     return results;
}

雖然生成了100個, 但是我們實際就需要前10個. 怎麼辦? 造成了Memory Usage的浪費.
所以, Lazy Evaluation 就來了幫忙了.

我們實際想要的是如下結果:

oneHunderItems.take(10).each(doWork);

var threshold = 10;
for (var i = 0; i < 100; i++) {
  if (i >= threshold) {
      break;
  }
  else {
    var item = items[i];
    // do work on item
     doWork(item)
  }
}

更誇張點, 來個 Infinity. 懂了原理的我們也是不怕的 :)

當然了, 這個寫法很... Not reusable. 所以推薦大家看看Lazy.js

Reference:

  1. Optimizing your JavaScript with Functional Programming
  2. Simple JavaScript implementation of cons list with lazy evaluation of map, filter etc.
    Raw
  3. Into the Land of Functional Programming with JavaScript
上一篇下一篇

猜你喜欢

热点阅读