美文网首页javaScript学习JavaScript深究JavaScript
JavaScript Lazy Evaluation 惰性求值

JavaScript Lazy Evaluation 惰性求值

作者: jProvim | 来源:发表于2015-10-08 12:10 被阅读339次

    什麼是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

    相关文章

      网友评论

        本文标题:JavaScript Lazy Evaluation 惰性求值

        本文链接:https://www.haomeiwen.com/subject/darncttx.html