2016-11-17 26 views
-3

序列(開始,步驟)帶有一系列函數調用的Javascript序列

該函數接受兩個數字輸入,start和stop,並返回一個沒有輸入的函數。結果函數將生成一個以start開始並逐步偏移的值序列。每個函數調用將生成序列中的下一個值。 示例

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

評論清理時間:)現在這些都是無關緊要的。請刪除你自己的評論 –

相關問題