2017-05-12 19 views
-1

私はこれをJS Lintを通して0エラーで実行しましたが、私のChromeコンソールでスクリプトを実行すると、fil()は機能ではないことがわかります。このパターンのクロージャはfilter()関数で追加するまで機能していますが、何がブレークの原因かわかりません。機能がありません。Chromeコンソールエラー

以下のコードでは、index()の呼び出しは必要なように機能しますが、fil()を呼び出すとエラーが返されます。

"use strict"; 

function from(start) { 
    return function() { 
     var tempstart = start; 
     start += 1; 
     return tempstart; 
    }; 
} 

function to(gen, limit) { 
    return function() { 
     var localnum = gen(); 
     if (localnum < limit) { 
      return localnum; 
     } 
     return undefined; 
    }; 
} 

function fromTo(start, end) { 
    return to(from(start), end); 
} 

var index = fromTo(0, 3); 
index(); 

function filter(gen, predicate) { 
    var value; 
    do { 
     value = gen(); 
    } while (
     value !== undefined && !predicate(value) 
    ); 
    return value; 
} 

var fil = filter(fromTo(0, 5), function third(value) { 
    return (value % 3) === 0; 
}); 

fil(); 
+0

'filter'は関数ではなく値を返します。 –

答えて

0

filter()で関数を返すのを忘れていました...それに戻り値が追加されました。

関連する問題