2016-11-17 12 views
-3

配列を呼び出し(ステップ開始)Javascriptの配列は

この関数は、2つの数値の入力を受け取り、起動と停止、及び無入力の関数を返します。結果の関数は、startとoffsetで始まる一連の値を生成します。各関数呼び出しは、シーケンス内の次の値を生成します。 例

var x = sequence(3, 15); 
[ x(), x(), x() ] => [ 3, 18, 33 ] 
var y = sequence(28, -5); 
[ y(), y(), y() ] => [ 28, 23, 18 ] 

これを解決するにはどうすればよいですか?

+0

これは、シーケンスを呼び出し、ヒントである関数を返す、この機能は、独自のスコープを必要とします。さらに進んでしまうと駄目になります。 – axelduch

+3

何も試みていない場合は、問題を解決するだけです。試したことを、エラーメッセージと実際の動作と予想される動作とに加えて表示すると、間違っていたことを特定でき、さらに多くのことを学ぶことができます。 –

答えて

1

sequenceは単に関数を返すだけではありません。これは、開始/ステップ値を追跡するクロージャ付きの関数を返します。だからスタート、ステップ、カウンターがそれに縛られている。だから彼らと一緒に作業することができます。

function sequence(start, step) { 
 
    var counter = -1; 
 
    return function() { 
 
    // This is the function that will return the next element 
 
    // It uses the counter, start, step variables from its closure 
 
    // Notice they live outside of the inner function so the counter is not reset 
 
    // every time you run this function. 
 
    counter++; 
 
    return start + step * counter; 
 
    }; 
 
}; 
 

 
var x = sequence(1, 3); 
 
var y = sequence(-1, -2); 
 

 
console.log('x()', x(), x(), x()); 
 
console.log('y()', y(), y(), y());

+0

@JLRishe最新バージョンを上書きしているという警告は表示されませんか? –

+0

コメントクリーンアップ時間:)これはすべて今では無関係です。あなた自身のコメントを削除してください –